#include<stdio.h>
#include<math.h>
int main()
{
int a[25],flag,pos=0,sum=0;//a[25]存放100以内的质数,flag为标志位,若不是质
//就赋值为0,pos记录a[25]中的下一个存储下标,sum存放质数之和。
for(int i=2;i!=101;i++)
{//循环遍历2-100的数,1不是质数
flag=1;
for(int j=0;(j!=pos)&&(a[j]<=floor(sqrt(i)));j++)
{//根据质数判断定理:“对正整数n,如果用小于或等于根号n的所有质数去除,
//无法整除,则n为质数” ,pos之前的位置都存放了质数。
if(i%a[j]==0)
{
flag=0;
break;
}
}
if(flag||!pos)
{//此处的pos取反,用于第一个质数存入,第一个质数不满足上面的判断
a[pos]=i;
sum+=a[pos];
++pos;
}
}
//显示所有质数
for(int i=0;i!=25;i++)
{
printf("%d ",a[i]);
}
//打印和
printf("\n求得的和为:\n");
printf("%d\n",sum);
}
结果如图:
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/8644ebf81a4c510f801926706359252dd52aa5ff?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)