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

(一)质数

质数,又称为素数,指在一个大于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


加入少儿信息学奥赛学习QQ群请扫左侧二维码,关注微信公众号请扫右侧二维码


QQ群和公众号.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,656评论 0 5
  • 去往落日的路 有着可以丈量的遥远 从任何陌生的小镇出发 都在阴雨天,追赶起点 这是梨树苍老,土屋颓废之后的事 此刻...
    2020号阅读 471评论 9 36
  • 浮云蔽日,鸟雀在窗外“叽叽喳喳”的吵闹。本想在这初夏的午后美美的小憩片刻,只能作罢。 忽然想起应该微信联系下同事小...
    琦灵阅读 1,058评论 10 11
  • 我做了一个小小的统计,从3月4日到4月8日,我利用周末的时间在岳麓山、桃花谷和小区里完成5次拍摄,共按快门637次...
    大鸟8wo阅读 488评论 8 6
  • 我想好了所有后路,只为了奋力一搏 我知道会很艰辛会很吃力,也许付出了也没有相应的结果,但是如果现在放弃,也许多年之...
    ca5fee1cd4bf阅读 216评论 0 1