zoukankan      html  css  js  c++  java
  • 【算法笔记】B1013 数素数

    1013 数素数 (20 分)

    令 Pi​​ 表示第 i 个素数。现任给两个正整数 MN104​​,请输出 PM​​ 到 PN​​ 的所有素数。

    输入格式:

    输入在一行中给出 M 和 N,其间以空格分隔。

    输出格式:

    输出从 PM​​ 到 PN​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

    输入样例:

    5 27
    

    输出样例:

    11 13 17 19 23 29 31 37 41 43
    47 53 59 61 67 71 73 79 83 89
    97 101 103

    分析

      参考B1007写的判断素数函数并稍微优化了一点,判断+输出就OK,输出控制可以加一个Ctrl变量,Ctrl=n代表一行里第n个,当自增到10就换行并赋值0;

      素数的判断一共分三步:

    1. 如果n是2或3,则n是质数;
    2. 如果n不在6的倍数的两侧,则n不是质数;
    3. 对于在6的倍数的两侧的n,判断是否能被2和根号n之间的数整除。

    CODE:

    #include<iostream>
    using namespace std;
    
    bool isPrime(int n){
        if(n<=3){
            return n > 1;
        }
        if(n % 6 != 1 && n % 6 !=5)
            return false;
        for(int i = 2;i*i <= n;i ++){
            if(n % i == 0)
                return false;
        }
        return true;
    }
    
    int main(){
        int m, n;
        cin>>m>>n;
        int i=1, cnt, ctrl=2;
        for(cnt=0;cnt<m;){
            if(isPrime(++i)){
                cnt++;
            }
        }
        cout<<i;
        while(cnt<n){
            if(isPrime(++i)){
                cnt++;
                if(ctrl == 1){
                    cout<<i;
                }
                else if(ctrl == 10){
                    cout<<" "<<i<<endl;
                    ctrl = 0;
                }
                else{
                    cout<<" "<<i;
                }
                ctrl++;
            }    
        }
        return 0;
    }
  • 相关阅读:
    SQLite out of order error备忘
    SQLITE_TOOBIG
    Android CursorWindow问题备忘
    SQLite3神奇的UNION、UNION ALL与LIMIT组合
    Android Database(SQLite)参数绑定问题初探
    Android SQLite 加入自定义函数
    修改替换/system/framework/framework.jar后重启手机为何没有效果?
    手动调用NDK编译HelloWorld
    第一篇
    程序题
  • 原文地址:https://www.cnblogs.com/chunlinn/p/10504444.html
Copyright © 2011-2022 走看看