C++ 求N以内的素数

本片博客用于记录使用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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值