zoukankan      html  css  js  c++  java
  • (素数筛) 找质数

    一天蒜头君猜想,是不是所有的偶数(除了 2),都可以用两个质数相加得到呢?


    输入格式
    第一行输入一个整数 t 表示测试组数。
    接下来 t 行,每行一个整数 n。


    输出格式
    输出两个整数,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的。


    数据范围
    对于 30%的数据 1<=t<=10^3
    对于 60% 的数据 1<=t<=10^5
    对于 100% 的数据 1<=t<=10^6,4<=n<=10^6,n 为偶数。

    解法一:用素数筛打表存入数组,遍历时,判断 i 和 n-i 是不是素数就比较方便(AC)

    复制代码
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
    
    bool p[1000005];
    int main() {
        int n;
        int m;
        scanf("%d",&n);
        for(int i=2;i<=1000000;i++){                   
            p[i]=true;
        }
        for(int i=2;i*i<=1000000;i++){           //素数筛打表 
            if(p[i]){
                for(int j=i*i;j<=1000000;j+=i){
                    p[j]=false;
                }
            }
        }
        while(n--){
            scanf("%d",&m);
            for(int i=2;;i++){
                if(p[i]&&p[m-i]){               //只要某数 i 和 m-i都为质数 则为结果所求 
                    printf("%d %d
    ",i,m-i);
                    break;
                }
            }
        }
        return 0;
    }
    复制代码

    解法二:用30%的数据在10^3,暴力破解可以通过部分。

    复制代码
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    
    using namespace std;
    bool prime(long x){                           //判断素数 
        for(int i=2;i*i<=x;i++){
            if(x%i==0) return false;
        }
        return true;
    } 
    int main() {
        int n;
        int m;
        scanf("%d",&n);
        while(n--){
            scanf("%d",&m);
            for(int i=2;;i++){
                if(prime(i)&&prime(m-i)){         //遍历1到m,判断i 和 m-i是不是素数 
                    printf("%d %d
    ",i,m-i);
                    break;
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    spring boot redis 使用代码配置 redis的连接信息
    mysql Last_SQL_Error
    mysql relay log
    idea插件开发
    全网唯一正常能用的centos7 安装mysql5.7.35 22 33 25
    LVM逻辑卷管理器
    git提交代码
    数据中心统一网络实战:FCoE部署指南
    详解HBA、NIC与CNA的区别
    存储网络 – 了解FCoE的八个技术细节
  • 原文地址:https://www.cnblogs.com/xusi/p/12398686.html
Copyright © 2011-2022 走看看