考虑一个代码来显示一个数字是素数还是非素数?

use*_*604 1 c

现在我在编译方面遇到了新代码的问题.我有两个很好的答案,但chux的答案是为了纠正我的代码.所以根据他/她的指示我的新代码是:

#include <math.h>
#include <conio.h>
int main()
{
    int n,i,r;

    printf("Enter A Number to know its prime or non prime");
    scanf("%d",&n);
    for(i=2;i<=n-1;i++)
    {
        if(n%i==0) 
        {r==1;
        break;
    }
    }

    if(r==1)
    printf("%d is a non-prime number",n);
    else 
        printf("%d is a prime number",n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但在输出上显示为87是素数.我不知道为什么.但有人能发现我的错误吗?

chu*_*ica 5

几乎没有问题

作业与比较

if (r=1)分配1r,if (r=1)总是如此.当然需要比较, @ Ry

// if (r=1)
if (r == 1)
Run Code Online (Sandbox Code Playgroud)

没有早点休息

OP的代码:值r取决于最后一次迭代.当然,一旦找到一个因素,循环就应该退出.

for(i=2;i<=n-1;i++) {
  if(n%i==0)
    // r=1;
    { r = 1; break; }
  else 
    r=0;
}
Run Code Online (Sandbox Code Playgroud)

n == 0,1的功能不正确

所有值都n < 2错误地报告为素数.

低效

代码执行最多n循环.只需要执行sqrt(n)循环.提示:千万不能在这里使用浮点运算的一个整数的问题.

// for(i=2;i<=n-1;i++)
for(i = 2; i <= n/i; i++)
Run Code Online (Sandbox Code Playgroud)

备用

只有你必须编码才能窥视.