编写程序,求100-999之间所有素数的平均值(输出两位小数)
1.思路
- 素数:只能被1和它本身整除的数
- 外循环遍历100-999,内循环判断是否为素数
2.代码实现
第一种方法
int main(){
int i,j,sum=0,count=0;
for(i=101;i<=999;i+=2){ //所有偶数都不是素数
for(j=2;j<i;j++) //因数,比如 8的因子是1*8;2*4;
if(i%j==0) //除1和它本身之外最大的因子是他的
break; //判断能否整除,能就不是素数,跳出循环
if(j==i){ //当判断运行完以后,j++,这时j==i;
count++; //这样当j==i,i%j!=0,j++,这时j就会大于i/2;
sum=sum+i;
}
}
printf("%.2f",(float)sum/count);//平均数保留两位小数,强制转化float类型;也可直接定义sum为float类型
}
第二种方法(函数调用)
int main(){
int i,j,n,sum=0,count=0;
for(i=100;i<=999;i++)
if(f(i)){ //调用f函数判断是否是素数,是返回1,否返回0
sum+=i; //0为假非0为真
count++;
}
printf("%.2f",(float)sum/count);
}
int f(int a){
int i;
for(i=2;i<a;i++){
if(a%i==0)
return 0;
}
return 1;
}