本片博客用于记录使用C++求解N以内的素数(质数)
先来回顾一下定义:
素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
解法一:常规使用两层循环
思路
1.先用一层循环遍历N以内的所以数字(1除外,因为1不是素数)
for (int i = 2; i < n; i++)
2.嵌套第二层循环,针对N以内的一个特定的i,使用if语句,令i对任一小于i大于1的数取余数
for (int i = 2; i < n; i++)
{
int j;
for (j = 2; j < i; j++)
{
if (i % j == 0)
3.若余数为0,则说明i可以除以除了i和1以外的数,使用break跳出本层循环,判断其不是素数
if (i % j == 0)
{
break; // 若i对j取余数为0,则说明i不是素数
}
4.若遍历完2<=j<=i,余数都没有为0,j++到等于i了,则说明该i为素数并输出
if (j == i) // 表明没有找到任何一个符合要求的因子j,j一直加到等于i,所以为素数
{
cout << i << endl;
}
完整代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
if(n == 1 || n==0)
{
return 0;
}
for (int i = 2; i <= n; i++)
{
int j;
for (j = 2; j <= i; j++)
{
if (i % j == 0)
{
break; // 若i对j取余数为0,则说明i不是素数
}
}
if (j == i) // 表明没有找到任何一个符合要求的因子j,j一直加到等于i,所以为素数
{
cout << i << endl;
}
}
return 0;
}