请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出.s=148.874270.

请用函数编写程序实现:计算3到100之间所有素数的平方根之和,并输出。s=148.874270。算法分析:1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回... 请用函数编写程序实现:计算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);
}
运行后一直是错误的,请问我是哪里写错了!?
展开
 我来答
changyiduU4Q
高粉答主

2019-08-20 · 关注我不会让你失望
知道答主
回答量:264
采纳率:100%
帮助的人:8.3万
展开全部

需要将主函数的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的素数

system("pause");//防止闪退return 0;}

参考资料来源:百度百科-质数

cdyzxy
2016-05-11 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:84%
帮助的人:3674万
展开全部
请把double s;改成double s=0;
追问
那个....我还是新手...能请问一下为什么么?麻烦了...
追答
s这个变量没有赋初值,导致变量s中一开始可能存储任意一个值,这样去累加时等于除了这个多项式以外还加入了s的这个任意初始值,导致结果错误,将s的初始值变成0,可以正确地开始计算。
累加值一般在累加前要赋值成0
累乘值一般在累乘运算前要赋值成1
这样才能得到正确结果。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式