求n为多少时,an不在是素数。为什么运行不出来结果?
#include<stdio.h>int main()
{
int prime(int m);
int n,x,an;
for(n=0;x==0;n++);
{
an=n*n+n+41;
while(prime(an)==0)
{
printf("%d,%d",an,n);
x=0;
}
}
return 0;
}
int prime(int m)
{
int i;
for(i=2;i<m/2;i++)
if(m%i==0)return(0);
return(1);
} 不知道,手上没电脑,无法调试。但你程序的逻辑肯定错了,prime(an)!=0才是你需要的 存在几个错误:
1)for(n=0;x==0;n++); 这句不应该有;符号结尾。
2)对于变量x,没赋初值,先假设编译系统给了0,然后for里的判断结束条件 x==0,while里改变的有 x=0; 这个x一直就是0没起到作用,应给个初值=1。
3) 这是个死循环,因为while里的条件一旦达成后不会变化, while(prime(an)==0)
{
printf("%d,%d",an,n);
x=0;
} 应该改成 if,然后{}里加break;
iqy2020 发表于 2020-12-2 12:01
存在几个错误:
1)for(n=0;x==0;n++); 这句不应该有;符号结尾。
2)对于变量x,没赋初值,先假设编译系 ...
好的,搞好了
页:
[1]