C语言练习题——列出前N个素数(不要与“N以内的素数”弄混了)
以下是我的代码,如果有优化空间,请在下方回复。程序代码:
#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编辑过]