#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
}