#includestdio.h
成都创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都网站制作、成都网站建设、重庆APP软件开发、小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
#includemath.h
int prime(int m)
{
int k,j;
k=(int)sqrt(m); //加个强制转换就可以了,不然会报警告。sqrt()的返回值类型是double 出现红线,只是有可能是拼写问题,不代表是错误
for(j=2;j=k;j++)
if(m%j==0)
return 0;
return 1;
}
int main()
{
int m=2,n=20,i,s;
s=0;
for(i=m;i=n;i++)
if(prime(i)==0)
s+=i;
printf("Sum is:%d\n",s);
return 0;
}
int m =sqrt((double)i);C语言是没有重载的,C++才有,你应该是用C++的编译器来写C语言吧在C++中sqrt有两个重载函数,一个参数是double,另一个是float由于你传的参数是int在默认的隐式类型转换中int可以转换成float也可以转换为double,编译器就不知道你想调用哪一个。
VS C语言中 取根函数有 double sqrt(double ) ; float sqrtf(float); long double sqrtl(long double x); 看清楚了,每个sqrt是不一样的。
楼主的4.0不知道是什么类型 ,比如说是float,但是调用sqrt(4.0),所以可能是因为float-double隐式转换调用double sqrt(double x)导致你的结果出错。
头文件加#include math.h//sqrt是math中的函数,
而且你的内循环有问题, 更改如下:
for(;b=d;b++)
{ c=a%d;
if(c==0)
break;
else if(b==d)
printf("%d \n",a);
}
完整程序如下
#include math.h
#include "stdio.h"
void main()
{ int a,b,c,d;
a=101; b=2;
printf("101到200的素数有以下\n");
for(;a201;a++)
{
d=sqrt(a);
for(;b=d;b++)
{ c=a%d;
if(c==0)
break;
else if(b==d)
printf("%d \n",a);
}
a++;
}
}
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款