求素数时的若干问题

输出100~200之间的素数:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(){
	int i, j;
	int count = 0;
	for (i = 101; i < 200; i=i+2){
		for (j = 2; j <= sqrt(i); j++){  //减少循环次数:1:(j<i) 2:(j<i/2)
			if (i%j == 0)
				break;
		}
		if (j >sqrt(i)){//当为if(i>=j)时将所有数字全部输出 1:(j>=i) 2:(j>i/2)
			count++;
			printf("%d,",i);
		}
		//}当第二个for括号在此处时将无法输出正确素数
	}
	printf("\n");
	printf("素数的个数为:%d", count);
	system("pause");
	return 0;
}

1:判断时当break跳出时即i有因数;当i没有因数时j的取值为i-1,若判断条件为(i>=j,则所有数字均可以满足该条件。故(j>=i)时才有条件满足;

2:当第二个for的括号位于第二判断语句下是则无法满足判断条件故此时无法输出数字

猜你喜欢

转载自blog.csdn.net/qq_44370562/article/details/88594676