n开根号是double类型的,我取整型了,为什么还会出现错误呢
math()函数报错,试试将math(n)改为math(n*1.0)试试。
测试如下:
参考链接:
#include <stdio.h>
#include <math.h>
int main(void){
int n,i,k;
printf("please input n:\n");
scanf("%d",&n);
// https://blog.csdn.net/m0_37687058/article/details/59750408
k=(int)sqrt(n*1.0);
for(i=2;i<=k;i++){
if(n%i==0){
break;
}
}
if(((i==(k+1)&&n!=1))||n==2){
printf("yes");
// printf("\nk=%d,i=%d,n=%d\n",k,i,n);
}else{
printf("no");
// printf("\nk=%d,i=%d,n=%d\n",k,i,n);
}
return 0;
}
k=int(sqrt((double)n));
这样看看
具体报错栏那里写什么?
试试不强转
【以下回答由 GPT 生成】
问题的理解和代码的优化是准确的,并且能够满足您的需求。通过将原始代码进行调整和修改,我优化了代码的逻辑和风格,使之更加规范和易读。在原始代码中,存在以下问题:
通过以上优化后的代码,可以准确判断一个数是否为素数,并输出相应的结果。
【相关推荐】