C语言中求素数的函数设计,下面这个代码中的k=sqrt((double)n);里面为什么要加(double)n?这是什么意思?
#include<stdio.h>#include<math.h>intP(int);intmain(void){intm,num=0;inti,j;scanf("%d%...
#include<stdio.h>
#include<math.h>
int P(int );
int main(void)
{
int m,num=0;
int i,j;
scanf("%d %d",&i,&j);
for (m=i; m<=j; m=m+1)
{
if(P(m))
{
printf("%d ",m);
num++;
}
}
printf("\n%d\n",num);
return 0;
}
int P(int n)
{
int found,i;
double k;
k=sqrt((double)n);//这句话中的(double)是不是用来改变n的数据类型,这一类相似的改法怎么用?
found = 1;
i = 2;
while(i<=k && found)
{
if( n%i ==0)
found = 0;
i++;
}
return found;
}
求解答~~~~~~~~~~~~~~~ 展开
#include<math.h>
int P(int );
int main(void)
{
int m,num=0;
int i,j;
scanf("%d %d",&i,&j);
for (m=i; m<=j; m=m+1)
{
if(P(m))
{
printf("%d ",m);
num++;
}
}
printf("\n%d\n",num);
return 0;
}
int P(int n)
{
int found,i;
double k;
k=sqrt((double)n);//这句话中的(double)是不是用来改变n的数据类型,这一类相似的改法怎么用?
found = 1;
i = 2;
while(i<=k && found)
{
if( n%i ==0)
found = 0;
i++;
}
return found;
}
求解答~~~~~~~~~~~~~~~ 展开
4个回答
展开全部
因为k是double类型的,而n是int类型的,不同类型变量之间是不能赋值运算的!所以要加(double)!
追问
这一类相似的改法怎么用?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示转换为双精度浮点数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
k=sqrt((double)n);
改为
k=sqrt(n*1.0);//效果同上
改为
k=sqrt(n*1.0);//效果同上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询