Omega. 发表于 2020-12-2 10:50:04

求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);
       
}

倒戈卸甲 发表于 2020-12-2 11:41:33

不知道,手上没电脑,无法调试。但你程序的逻辑肯定错了,prime(an)!=0才是你需要的

iqy2020 发表于 2020-12-2 12:01:02

存在几个错误:
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;

Omega. 发表于 2020-12-2 23:42:47

iqy2020 发表于 2020-12-2 12:01
存在几个错误:
1)for(n=0;x==0;n++); 这句不应该有;符号结尾。
2)对于变量x,没赋初值,先假设编译系 ...

好的,搞好了
页: [1]
查看完整版本: 求n为多少时,an不在是素数。为什么运行不出来结果?