筛质数(暴力法、埃氏筛、欧拉筛)
暴力法
思路分析:
直接双for循环来求解质数
如果不设置标记只是简单地执行了break会导致内部循环(由j控制)而不是立即打印i或者跳过它。如果打印语句写到内部循环中,也会导致每个
非素数也被打印出来多次(在找到其因子之前)。
code:
#include <iostream>
using namespace std;
int n;
int main() {cin >> n;for (int i = 2; i <= n; i++) { // 从2开始,因为1不是素数bool isprime = true; // 假设i是素数for (int j = 2; j * j <= i; j++) { // 只需要检查到sqrt(i),因为如果i有一个大于sqrt(i)的因子,那么它必然还有一个小于或等于sqrt(i)的因子if (i % j == 0) {isprime = false