重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void main()
成都创新互联是一家专业从事成都网站建设、网站制作的网络公司。作为专业的建站公司,成都创新互联依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、成都营销网站建设及网站设计开发服务!
{
int i,j,n,sum=0;
scanf("%d",n);
i=n; //从n开始检查
while(n0)
{
if(prime(i)!=0) //是素数
{
sum=sum+i; //加上i
n--; //个数减1
}
i++; //取下一个数
}
printf("%d",sum);
}
按照你的要求编写的C语言程序如下
#includestdio.h
int f(int x) //定义判断素数的函数
{
int n,flag=1;
if(x==1) return 0;
for(n=2;nx;n++)
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=N;i=M;i++){
if(f(i)==1){
count++;
sum=sum+i;
}
}
printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum);
return 0;
}
网上的代码意思是:n就是你输入的任意数,判断它是否是素数的方法是用大于2小于n的数去除n,若能整除即不是素数,跳出循环;若数一直增加到n+1都没有被整除,即可输出“素数”。
你的源程序:3是素数,很简单,所以用if来提醒输入大于3的数,你的只是另一种素数算法,是优化的算法,更快。因为只需用2到根号a去判断。
#includestdio.h
#includemath.h
int lsPrime(int n);
int main()
{
int n, i, k, sum = 0;
printf("input n:\n");
scanf("%d", n);
for (i = 1; i = n; i++)
{
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 = 2; i = k; i++)
{
if (n % i == 0)
break;
}
if (i k n 1)
return 1;
else
return 0;
}