小朋友学算法(1):求质数

作者: 海天一树X | 来源:发表于2017-10-31 18:16 被阅读97次

(一)质数

质数,又称为素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(只有1和本身两个因数的数)。

(二)思路

如果m不能被 2~m的平方根 中的任何一个数整除,则m为素数。

证明(反证法):
由i = m/i ==> i = sqrt(m)
这样,对于i属于[2, sqrt(m)],假如i为m的因子,因为i * m/i = m,则m/i也为m的因子。这样,m就不是质数。
反过来,对于i属于[2, sqrt(m)],假如所有的i都不为m的因子,因为i * m/i = m,则m/i也为m的因子。

(三)程序

例1:输入一个数,判断这个数是否为质数

#include <iostream>
#include <math.h>
using namespace std;

bool isPrime(int m)
{
    if(m > 1)
    {
        for(int i = 2; i <= sqrt(m); i++)
        {
            if(0 == m % i)
            {
                return false;
            }
        }

        return true;
    }

    return false;
}

int main()
{
    int num;
    cin >> num;
    if(isPrime(num))
    {
        cout << num << " is a prime" << endl;
    }
    else
    {
        cout << num << " is not a prime" << endl;
    }

    return 0;
}

运行结果:

23
23 is a prime

例2:求1~100之间的全部质数

#include <iostream>
#include <math.h>
using namespace std;

bool isPrime(int m)
{
    if(m > 1)
    {
        for(int i = 2; i <= sqrt(m); i++)
        {
            if(0 == m % i)
            {
                return false;
            }
        }

        return true;
    }

    return false;
}

int main()
{
    for(int i = 2; i <= 100; i++)
    {
        if(isPrime(i))
        {
            cout << i << " ";
        }
    }

    return 0;
}

运行结果:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97



更多内容请关注微信公众号


wchat.jpg

相关文章

  • 小朋友学算法(1):求质数

    (一)质数 质数,又称为素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(只有1和本...

  • Android 每日算法:猫扑素数、单词反转

    经典算法集锦,不定时更新 一、素数(质数)算法 定义: 质数(prime number)又称素数,有无限个。质数定...

  • LeetCode204-Count Primes

    分析 这个题相当于求小于n的所有质数,曾在编程之美中看到过一个求一组质数的算法,叫厄拉多塞筛法,时间复杂度仅有O(...

  • 算法-求1到100以内所有的质数

    1、首先必须了解质数的定义,除了1和本身没有其他因数。2、考察要点:嵌套循环。3、代码实现1)for循环 2)wh...

  • Sum All Primes

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • Freecodecamp中级算法

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • FreeCodeCamp筆記之:Sum All Primes

    题目 求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 ...

  • 求质数

    public class zhishutest { public static void main(String[...

  • 求质数

    想到当初实习和转正的面试中都遇到了算质数这道题,又都没有很好的写出来,就很懊恼,所以想当个好的程序媛,先从这个问题...

  • ??Sum All Primes | Free Code Ca

    求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整...

网友评论

本文标题:小朋友学算法(1):求质数

本文链接:https://www.haomeiwen.com/subject/kgzbpxtx.html