思路:从3到100依次判断是否素数,如果是累加求和,最后输出累加和。
专注于为中小企业提供成都网站建设、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业孟村免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
参考代码:
#includestdio.h
int main()
{
int i,j,flg,sum=0;
for(i=3;i=100;i++){
flg=1;
for(j=2;ji;j++)//判断i是否是素数
if(i%j==0){
flg=0;//不是素数把flg定义成0
break;
}
if(flg) sum+=i;//是素数累加求和
}
printf("%d\n",sum);//输出累加和
return 0;
}
/*
运行结果:
1058
*/
#include "stdio.h"
int isprime(int n) //判断n是否为素数,是返回1,不是返回0
{
int i;
if(n==1)
return 0; //1不是素数
for(i=2;i=n/2;i++) //如果从2开始,到这个数半值时,有一个数能被整除,则不是素数
if(n%i==0)
return 0;
//从2开始,到这个数一半值时,没有一个能整除,则是素数
return 1;
}
int main()
{
int sum=0;
int i;
for(i=3;i=100;i++)
if(isprime(i)==1) //是素数就加到sum上去,
sum+=i;
printf("3到100之间的素数之和为:%d\n",sum);
}
主函数中定义一个初值为0的变量s承载素数的累加和,用一for循环遍历3~100间的奇数,判断这些奇数是否有1和自身以外的因子,没有的确定为素数并其值累加到s,s便是题解。代码如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int i,s,j;
for(s=0,i=3;i100;i+=2){//遍历3~100间的奇数
for(j=3;j*j=i;j+=2)//用3~i的平方根的整数除i
if(i%j==0)//有整除情况则不是素数
break;
if(j*ji)//是素数则将其累加到s
s+=i;
}
printf("The result is %d\n",s);//输出结果
return 0;
}
运行结果如下:
#include stdio.h
int isprime(int n)
{ int i;
for(i=2; i*i=n; i++)
if(n%i==0)return 0;
return 1;
}
int main()
{ int i,n=0;
printf("3到100的素数:\n");
for(i=3; i100; i++)
if(isprime(i))
{ printf("%d ",i);
n++;
}
printf("\n个数=%d\n",n);
return 0;
}
自定义一个判断素数的函数IsPrime,整型形参n是素数时返回n,否则返回0。主函数中用一for循环,计数变量i从3开始每步为2增量(因为大于2的奇数才可能是素数)到100,把用i调用IsPrime的返回值累加给和变量s,最后输出时调用库函数sqrt来求s的平方根。代码如下:
#include "stdio.h"
#include "math.h"//包含math.h以支持sqrt调用
int IsPrime(int n){//自定义素数判断
int i;
for(i=3;i*i=n;i+=2)
if(!(n%i))
return 0;
return n;
}
int main(int argc,char *argv[]){
int i,s;
for(s=0,i=3;i101;i+=2)//遍历3~100的奇数
s+=IsPrime(i);//把IsPrime的返回值累加到s
printf("The result is %g\n",sqrt(s));//调用库函数sqrt求平方根
return 0;
}
运行结果如下: