第一个程序
#include<stdio.h>
void main()
{
int n,c;
printf("enter a numb");
scanf( "%i", &n);
for( c = 2; c <= n; c++){
if( n % c == 0 )
break;
}
if( c == n )
printf("\nprime\n");
else
printf("\nnot prime\n");
getchar();
}
第二个计划
#include "stdio.h>
int main()
{
printf("Enter a Number\n");
int in, loop, rem, chk;
scanf("%d",&in);
for ( loop = 1; loop <= in; loop++){
rem = in % loop;
if( rem == 0)
chk = chk +1;
}
if ( chk == 2 )
printf("\nPRIME NUM ENTERED\n");
else
printf("\nNUM ENTERED NOT PRIME\n");
getchar();
}
第二个程序可以工作,但第一个程序是我 friend 写的,程序看起来不错,但通过单步执行检查,我们发现 if
第一个程序中的条件在每个输入下都会实现,所以这里的逻辑错误是什么,请帮我找出......
最佳答案
如果我们谈论第一个程序,那么读取整数 n 的方式就会出现问题。您需要传递它的地址:
printf("enter a numb");
scanf("%i",&n);
我很惊讶你的编译器没有捕捉到这一点。
关于c - C 中的质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550355/