![]() |
#2
rjsp2022-11-09 18:23
|

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int upper;
int i, j;
int is_prime;
printf("确定上限:");
scanf("%d", &upper);
while( upper > 0 )
{
for( i = 2; upper > 0; ++i ) /*由于不知道要跑到哪个数,所以让i一直自增,直到符合 upper > 0 的条件为止。*/
{
is_prime = 1;
for( j = 2; j < i; j++ )
{
if( i % j == 0 )
{ is_prime = 0; break; }/*加 break 就是为了,is_prime = 0 后,不再重复无用的循环动作。经过本人实测还是有一丢丢的速度提升。。。*/
}
if( is_prime == 1 )
{
printf("%d\n", i);
upper--; /*如果输出一个素数,就使|最外层|循环的条件控制变量减1*/
}
}
}
system("pause");
return 0;
}
/*****************************************
这个容易绕晕的是:循环中的条件控制变量不同。
*****************************************/
[此贴子已经被作者于2022-11-9 17:07编辑过]