C语言求素数和

Python010

C语言求素数和,第1张

#include<stdio.h>

#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去判断。