• 判断素数的相关代码


    素数是什么大家应该都知道,一个数是不是素数也很简单。

    一下是代码,分别由两个函数。一个函数实现判断一个数是不是素数,另外一个函数实现输出小于等于一个特定数字的所有素数。

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    //Display_sushu(int m)函数输出小于等于m的所有素数
    void Display_sushu(int m)
    {
        int n=0;
        int i;
        for(int j=1;j<=m;j++)
        {
            if (j==3||j==2||j==1)    //这里是j不是m,下面也是一样的
            {
                cout<<j<<"是素数"<<endl;
                continue;
            }
            n=j/2;
            for (i=2;i<=n;i++)
            {
                if (j%i==0)
                {
                    //cout<<m<<"不是素数"<<endl;
                    break;
                }
            }
            if (i>n)
                cout<<j<<"是素数"<<endl;
        }
    }
    
    //Is_sushu(int m)函数判断m是不是素数
    void Is_sushu(int m)
    {
        int n=m/2;
        if (m==1||m==2)
        {
            cout<<m<<"是素数"<<endl;
            return;
        }
        for (int i=2;i<=n;i++)
        {
            if (m%i==0)
            {
                cout<<m<<"不是素数"<<endl;
                return;
            }
        }
        cout<<m<<"是素数"<<endl;
    }
    
    int main()
    {
        int m;
        cin>>m;
        Is_sushu(m);
        cin>>m;
        Display_sushu(m);
        return 0;
    }

    截图:

    image

    PS:n=m/2即循环次数的控制,其实还可以写成n=sqrt(m),但是要求数据类型有要求。且需要头文件cmath。

    网摘:VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long)

    注意没有sqrt (int),但是返回值可以为int。

    这样子循环次数更少,效率更高。

    可以这样改的原因就是,一个数m如果可以分解成两个数(因子)的乘积(除开1和它本身),那么至少有一个因子小于等于sqrt(m),另外一个因子大于等于sqrt(m),最特别的两个因子都等于sqrt(m),即sqrt(m)*sqrt(m)。

  • 相关阅读:
    [CetOS7]ssh信任
    Qt 路径中常用字符“./”、“../”、“/”、“*”的含义
    C++ fgets函数
    时间函数QueryPerformanceFrequency
    C++snprintf的使用
    提高C/C++运行效率以及避免出现Bug的20种方法
    Git 基本使用方法
    Eigen 矩阵基本运算
    Qt 断言Q_ASSERT的使用
    Qt QChart使用指南
  • 原文地址:https://www.cnblogs.com/audi-car/p/4611648.html
Copyright © 2020-2023  润新知