质数 订阅
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 展开全文
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
信息
讨论范围
非0自然数
定    义
只有1和它本身两个因数的自然数
别    名
素数
中文名
质数
反义词
合数
外文名
prime  number
质数定义
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
收起全文
精华内容
参与话题
问答
  • 质数

    千次阅读 2020-02-08 17:47:40
    【问题描述】 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算 第 2019 个质数是多少? 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案...

    质数 十届蓝桥省赛 Java 大学 C 组

    【问题描述】 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算 第 2019 个质数是多少?
    【答案提交】
    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    思路:套路太深了,第一次算了2019一共有多少个质数……
    对答案,发现不对,我就说不可能这么简单-.-#
    补充知识点:在循环外给一个符号(只要不是java关键字都可以),然后就是指定到该循环的位置…

    public class Main {
    	public static void main(String[] args) {
    		int count = 0;                    //统计质数
    		A: for (int i = 2;; i++) {        //最大循环
    			for (int j = 2; j < i; j++) { //不能被其他自然数整除的数
    				if (i % j == 0) {         //等于0,不是质数
    					continue A;           //跳出循环,直到A:再次循环
    				}
    			}
    			count++;                      //统计出的质数和
    			if (count == 2019) {          //等于,题要求的2019
    				System.out.println(i);    //输出结果17569
    			}
    		}
    	}
    }
    

    一失足千古恨,套路总是得人心……

    展开全文
  • 判断一个数是不是质数(素数),3种方式介绍

    万次阅读 多人点赞 2018-06-10 09:56:59
    一、概念介绍 大家中学都学过,就不过多介绍了,大致提两点:... 0和1既不是质数也不是合数,最小的质数是2 二、方法介绍 1.最直观,但效率最低的写法 public static boolean isPrime(int n){ if (n <= ...

    一、概念介绍

        大家中学都学过,就不过多介绍了,大致提两点:

    •     质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
    •     0和1既不是质数也不是合数,最小的质数是2

     

    二、方法介绍

    1.最直观,但效率最低的写法

    public static boolean isPrime(int n){
        if (n <= 3) {
            return n > 1;
        }
        for(int i = 2; i < n; i++){
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }

        这里特殊处理了一下小于等于3的数,因为小于等于3的自然数只有2和3是质数。

        然后,我们只需要从2开始,一直到小于其自身,依次判断能否被n整除即可,能够整除则不是质数,否则是质数。

     

    2.初步优化

        假如n是合数,必然存在非1的两个约数p1和p2,其中p1<=sqrt(n),p2>=sqrt(n)。由此我们可以改进上述方法优化循环次数。如下:

    public static boolean isPrime(int n) {
        if (n <= 3) {
            return n > 1;
        }
        int sqrt = (int)Math.sqrt(n);
        for (int i = 2; i <= sqrt; i++) {
            if(n % i == 0) {
                return false;
            }
        }
        return true;
    }

     

    3.继续优化

        我们继续分析,其实质数还有一个特点,就是它总是等于 6x-1 或者 6x+1,其中 x 是大于等于1的自然数。

        如何论证这个结论呢,其实不难。首先 6x 肯定不是质数,因为它能被 6 整除;其次 6x+2 肯定也不是质数,因为它还能被2整除;依次类推,6x+3 肯定能被 3 整除;6x+4 肯定能被 2 整除。那么,就只有 6x+1 和 6x+5 (即等同于6x-1) 可能是质数了。所以循环的步长可以设为 6,然后每次只判断 6 两侧的数即可。

    public static boolean isPrime(int num) {
        if (num <= 3) {
            return num > 1;
        }
        // 不在6的倍数两侧的一定不是质数
        if (num % 6 != 1 && num % 6 != 5) {
            return false;
        }
        int sqrt = (int) Math.sqrt(num);
        for (int i = 5; i <= sqrt; i += 6) {
            if (num % i == 0 || num % (i + 2) == 0) {
                return false;
            }
        }
        return true;
    }

        对于输入的自然数 n 较小时,也许效果不怎么明显,但是当 n 越来越大后,该方法的执行效率就会越来越明显了。
        

    展开全文
  • 质数检测模板

    万次阅读 2017-07-13 09:52:49
    1186质数检测V2 基准时间限制:1秒 空间限制:131072KB 分值:40难度:4级算法题 收藏 关注 给出1个正整数N,检测N是否为质数。如果是,输出"Yes",否则输出"No"。 Input 输入一个数N(2 Output ...
    基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
     收藏
     关注
    给出1个正整数N,检测N是否为质数。如果是,输出"Yes",否则输出"No"。
     
    Input
    输入一个数N(2 <= N <= 10^30)
    Output
    如果N为质数,输出"Yes",否则输出"No"。
    Input示例
    17
    Output示例
    Yes

     

     

     

     

    boolean isPrime=aBigInteger.isprobablePrime(alpha); 
    //false:  this BigInteger is 100% not prime 
    //true: this BigInteger may be a prime, the probability is larger
    //than (1-1/20)=95%.
    //the larger the alpha, the longer the calculation time will be.

     

    import java.util.*;  
    import java.math.*;  
    public class TEST {  
         
        public static void main(String args[]){  
              
            Scanner cin = new Scanner(System.in);  
            while(cin.hasNext()){  
                BigInteger m = cin.nextBigInteger();  
                if(m.isProbablePrime(1)){  
                    System.out.println("Yes");  
                }  
                else{  
                    System.out.println("No");  
                }  
            }  
        }  
    }  

     

     

     

     

     

     

    [cpp] view plain copy
     
    1.  
    展开全文
  • 质数判断程序-判断质数
  • 质数-筛质数

    2020-02-27 15:40:58
    质数-筛质数 质数定理: 1~n中质数有n/ln(n)个质数 Example 给定一个正整数n,请你求出1~n中质数的个数。 输入格式 共一行,包含整数n。 输出格式 共一行,包含一个整数,表示1~n中质数的个数。 数据...

    质数-筛质数

    质数定理:

    1~n中质数有n/ln(n)个质数

    按顺序删除每个数的倍数,最后剩下的就是质数。

    Example

    给定一个正整数n,请你求出1~n中质数的个数。

    输入格式

    共一行,包含整数n。

    输出格式

    共一行,包含一个整数,表示1~n中质数的个数。

    数据范围

    1≤n≤1061≤n≤106

    输入样例:

    8
    

    输出样例:

    4
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 1000010;
    
    int primes[N], cnt;
    bool st[N];
    
    //朴素做法
    void get_primes(int n)
    {
        for (int i = 2; i <= n; i ++){//从2开始枚举
            
            if (!st[i])primes[cnt ++ ] = n;//当前数没有被筛过,则是个质数
            for (int j = i + i; j <= n; j +=i) //将n的倍数删除掉
                st[j] = true;//标记为true
        }
    }
    
    //埃式筛法-O(nloglogn)
    void get_primes(int n) {
        for(int i = 2; i <= n; i++) {
            if(!st[i]){ 
                prime[cnt++] = i;
                for(int j = i; j <= n; j += i)
                    st[j] = true;
            }
        } 
    }
    
    //线性筛法-O(n), n = 1e7的时候基本就比埃式筛法快一倍了
    //算法核心:x仅会被其最小质因子筛去
    void get_prime(int x) {
        for(int i = 2; i <= x; i++) {
            if(!st[i]) prime[cnt++] = i;//找到质数
            for(int j = 0; prime[j] <= x / i; j++) {//从0开始找j倍数
                //对于任意一个合数x,假设pj为x最小质因子,当i<x/pj时,一定会被筛掉
                st[prime[j]*i] = true;//倍数直接标记
                if(i % prime[j] == 0) break;
                /*
                1.i%pj == 0, pj定为i最小质因子,pj也定为pj*i最小质因子
                2.i%pj != 0, pj定小于i的所有质因子,所以pj也为pj*i最小质因子
                */
            }
        }
    } 
    
    
    
    int main()
    {
        int n;
        cin >> n;
        
        get_primes(n);
        
        cout << cnt << endl;
        
        return 0;
    }
    

     

     

     

    展开全文
  • 质数中的质数

    2019-11-08 15:55:44
    如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。 例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。 现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来...
  • 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)...
  • 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做...
  • 质数中的质数质数筛法) 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是...
  • 质数口袋

    2020-12-07 22:43:02
    质数口袋:小A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下...
  • 1181 质数中的质数质数筛法)  题目来源: Sgu 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。...

空空如也

1 2 3 4 5 ... 20
收藏数 27,495
精华内容 10,998
关键字:

质数