#include<math.h>
int lsPrime(int n)
int main()
{
int n, i, k, sum = 0
printf("input n:\n")
scanf("%d", &n)
for (i = 1i <= ni++)
{
if (lsPrime(i) == 1)
{
sum += i
}
}
printf("sum=%d\n", sum)
return 0
}
int lsPrime(int n) ///是素数21135261返回410216531,否则返回0
{
int i, k
k = (int) sqrt(n)
for (i = 2i <= ki++)
{
if (n % i == 0)
break
}
if (i >k &&n >1)
return 1
else
return 0
}
代码资料:
#include "stdio.h"
char a[10000000]//全局数组以解决太长问题
int main(int argc,char *argv[]){
int i,j,max
printf("Enter max(int 10<max<=10000000)...\nmax=")
if(scanf("%d",&max)!=1 || max<11 || max>10000000){//保证max正确,否则退出
printf("Input error, exit...\n")
return 0
}
for(i=2i<=maxa[i++]=1)//为筛选法初始化数组
for(a[0]=a[1]=0,i=2i<maxi++)//筛选法求素数
if(a[i])
for(j=i+1j<maxa[j++]=a[j] &&j%i)
for(j=0,i=2i<max(j += a[i] ? i : 0),i++)//素数求和
printf("The result is %d\n",j)//输出结果
return 0
}
网上的代码意思是:n就是你输入的任意数,判断它是否是素数的方法是用大于2小于n的数去除n,若能整除即不是素数,跳出循环;若数一直增加到n+1都没有被整除,即可输出“素数”。你的源程序:3是素数,很简单,所以用if来提醒输入大于3的数,你的只是另一种素数算法,是优化的算法,更快。因为只需用2到根号a去判断。