我是新手,关于求质数的问题。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
int i,n;
clrscr();
scanf( "%d ",&n);
if (n <2) exit(0);
for(i=2;i <n;i++)
if (n%i==0) break;
if (i <n) printf( "%d不是质数 ",n);
else printf( "%d是质数 ",n);
getch();
}
我的问题是:为什么退出循环后还要继续对i与n的关系进行判断才能决定n是否为质数呢??
[解决办法]
当小于n的所有数都遍历过且都无法整除n的时候,才是素数,这时候i等于n,因为循环的成立条件是(i <n),且步长为1,所以退出循环时i等于n
但是,当存在一个数能够整除n的时候,就退出循环,退出循环的时候,i是小于n的,
最后,判断一下,i与n的关系,就可以知道n是否是素数了
[解决办法]
这和 if (i==n) printf( "%d是质数\n ",n);
else printf( "%d不是质数\n ",n);
是等价的
循环在i=n时肯定中止,不会出现i〉n的情况
小弟我是新手,关于求质数的有关问题
我是新手,关于求质数的问题。代码如下:#include stdio.h#include stdlib.h#include conio.hvoidmain(
