注册 登录
编程论坛 C语言论坛

这两个判断一个数是否为质数的代码哪里错了

他不是恶魔 发布于 2022-12-12 17:15, 927 次点击
#include <stdio.h>
int main()
{
    int num;
    scanf("%d",&num);
    for(int i=2;i<=i-1;i++)
    {if(num%i!=0){printf("%d是质数",num);}
    else printf("%d是",num);
    }
}


#include <stdio.h>
int main()
{
    int i=2,num;
    scanf("%d",&num);
    do{if(num%i!=0){i++;continue;}
    else printf("%d不是",num);break;
    }
    while(i<i-1);printf("%d是",num);
}
2 回复
#2
小白级的小黑2022-12-12 17:50
循环的判断表达式有误。
改为:i<= num-1

程序代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    scanf("%d",&num);

 
    for(int i = 2; i <= num - 1; i++)
    {
        if(num % i != 0)
        {    printf("%d是质数\n", num);    break;    }
        else
        {    printf("%d不是质数\n", num);    break;  }
    }
        
    system("pause");
    return 0;
}


顺便说一下,这个无法去判断2和3。

[此贴子已经被作者于2022-12-12 17:57编辑过]

#3
小白级的小黑2022-12-12 17:58
程序代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, i;
    int isPrime = 0;
     
    printf("输入一个数:");
    scanf("%d", &x);
   
    if( x == 2 )
    { printf("是素数\n"); }
    else
    {
        for( i = 2; i < x; i++ )
        {        
            if( x % i != 0 )
            { isPrime = 1; break; }
            else
            { isPrime = 0; break; }        
        }
        
        if( isPrime == 1 )
        { printf("是素数\n"); }
        else
        { printf("不是素数\n"); }   
    }
        
    system("pause");
    return 0;
}
1