现在我在编译方面遇到了新代码的问题.我有两个很好的答案,但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是素数.我不知道为什么.但有人能发现我的错误吗?
几乎没有问题
作业与比较
if (r=1)分配1给r,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)
备用
只有你必须编码才能窥视.