请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。
算法分析:
1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0
2、编写主函数,用一重循环遍历100以内所有数据
2.1、通过素数判别函数对循环的数据进行是否为素数的判别
2.2、返回判别为真的整数,并输出
3、程序结束。
#include <stdio.h>
#include<math.h>
int fun(int i)
{
int j,m=1;
for(j=2;j<i;j++)
if(i%j==0)
m=0;
return m;
}
void main()
{
int n;
double s;
for(n=3;n<=100;n++)
{
if(fun(n)==1)
{
s=s+sqrt(n);
}
}
printf("s=%lf",s);
}
运行后一直是错误的,请问我是哪里写错了!?
需要将主函数的void改成int,并在结尾返回0,且在fun函数中返回语句的位置不妥。则代码如下:
#include <stdio.h>
#include<math.h>
int fun(int i)
{int j,m=1;for(j=2;j<i;j++){
if(i%j==0){
m=0;
break; } }
return m;}
int main(){int n;
double s;
for(n=3;n<=100;n++){if(fun(n)==1){
s=s+sqrt(n);}}
printf("s=%lf",s);
return 0; }
扩展资料
素数计算
#include <stdio.h>#include <windows.h>int main(){double x,y,i;int a,b;x = 3.0;do{i = 2.0;do{y = x / i;a = (int)y;if(y != a)//用于判断是否为整数{if(i == x - 1){
b = (int)x;printf("%d\n",b);}}
i++;}while(y != a);
x++;}while(x <= 10000.0);//3到10000的素数
参考资料来源:百度百科-质数
那个....我还是新手...能请问一下为什么么?麻烦了...
追答s这个变量没有赋初值,导致变量s中一开始可能存储任意一个值,这样去累加时等于除了这个多项式以外还加入了s的这个任意初始值,导致结果错误,将s的初始值变成0,可以正确地开始计算。
累加值一般在累加前要赋值成0
累乘值一般在累乘运算前要赋值成1
这样才能得到正确结果。
...到100 之间所有素数的平方根之和,并输出.s=148.874270._百度知 ...
int main(){int n;double s;for(n=3;n<=100;n++){if(fun(n)==1){s=s+sqrt(n);}}printf("s=%lf",s);return 0; }