C语言求素数和

Python014

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"

main()

{

int i,j

for(i=100i<=300i++)

{

for(j=2j<ij++)

if(i%j==0)break

if(j==i)printf("%4d",i)

}

}

追问:

非常感谢你啊,请问你能告诉我

for(j=2j<ij++)

if(i%j==0)break

if(j==i)printf("%4d",i)

这个复合语句的意思吗?非常感谢!!

回答:

j从2到i-1去除i,

如果整除,就跳出本循环

如果不整除,j会变化到i然后结束循环

所以,如果j与i相等,那就是不整除,那么i一定是素数

按照你的要求编写的C语言程序如下

#include<stdio.h>

int f(int x) //定义判断素数的函数

{

int n,flag=1

if(x==1) return 0

for(n=2n<xn++)

if(x%n==0)

flag=0

return flag

}

int main()

{

int i,N,M,count=0,sum=0

scanf("%d%d",&N,&M)

for(i=Ni<=Mi++){

if(f(i)==1){

count++

sum=sum+i

}

}

printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum)

return 0

}