素数 订阅
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 展开全文
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
信息
讨论范围
非0自然数
定    义
只有1和它本身两个因数的自然数
别    名
素数
中文名
质数
反义词
合数
外文名
prime  number
质数定义
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
收起全文
精华内容
下载资源
问答
  • 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数。质数是与合数相对立的两个概念,...
  • ruby判断一个数是否为质数质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;(除0以外)否则称为合数 。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成...
  • 先求质数再判断回文,效率低下;所以先构造回文数,再判断质数。 偶数位的回文数都能被11整除。所以,偶数位的回文数除了11都是合数。 观察偶数位的回文数,提取所有奇数位的数字,与提取所有偶数位的数字,正好是...
  • 刚开始我写这个代码是想用一个简单的方法,但是能力有限,只能将这个比较普通的方法呈现出来...接下来我们要编写的便是判断这个数是否为素数。 代码如下: for i in range(x,y): for m in range(2,i-1): if i%m==0:
  • 主要介绍了java求100之内的素数简单示例,素数是一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数
  • 复制代码 代码如下:<?... $i ... 您可能感兴趣的文章:python求素数示例分享100-200之间所有素数求和程序代码(二个版本)java求100以内的素数示例分享
  • 主要介绍了Python 2种方法求某个范围内的所有素数(质数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 50000000(五千万)以内质数(素数)3001134(约三百万)个,普通pc演算(i7处理器)#质数#素数#合数
  • 1亿以内的质数(共5761455个数).txt
  • 判断质数 素数——我知道的最快的方法.pdf
  • //【程序2】  //题目:判断101-200之间有多少个素数,并输出所有素数。 //程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数), //如果能被整除, 则表明此数不是素数,反之是素数
  • 给定一个正整数n ( >= 3), 判断是不是素数。 思路介绍 使用蒙特卡罗法算法结合费尔马小定理结合二次探测定理。 费尔马小定理:如果p是素数,则有 ap−1  mod  p=1a^{p-1} \; mod \; p = 1ap−1modp=1, a∈[2,p−...
  • 一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数。 首先我们来第一个传统的判断思路: def handlerNum(num): # 质数大于...
  • 1. 什么是素数与合数 定义 在大于1的整数中,除了1和该数自身外,无法被其他整数整除的数。大于1的数若不为素数,则被称为合数,也叫作合成数。 素数的特点 大于2的质数只能是奇数。(不能说大于2的奇数都是质数。) ...
  • 使用java,求100以内的质数(素数)

    万次阅读 多人点赞 2018-10-18 14:53:57
    使用java,求100以内的质数(素数),做这道题目,有很多种方式!我代码中写了3种,大家可以任选一种!很多公司的面试的时候,笔试的时候很喜欢出这道题目。 (java的面试中很多时候都会考这道题目,不光可以考察多层...

    当时写的太着急了,代码我没整理,所以显得有点乱,大家见谅哈!

    使用java,求100以内的质数(素数),做这道题目,有很多种方式!我代码中写了3种,大家可以任选一种!很多公司的面试的时候,笔试的时候很喜欢出这道题目。

    (java的面试中很多时候都会考这道题目,不光可以考察多层嵌套循环,还可以考察break、sqrt()函数、小算法、条件判断结构、效率性能等等知识点,而且题目还不算太大,也不算太难,所以大家最好要会写)

    
    package javase;
    
    import java.util.Scanner;
    
    /** 
     * 求100以内的质数
    
     */
    public class PrimeNumber {
    
    	/** 
    	* 求100以内的质数
    
    	*/
    	public static void main(String[] args) {
    		//求100以内的质数
    		int number = 0;
    		int innerNumber = 0;
    		int count = 0; //100内有多少个质数
    		for (number = 2; number <= 100; number++) {
    //			for (innerNumber = 2; innerNumber <= number; innerNumber++) {
    			for (innerNumber = 2; innerNumber <= number; innerNumber++) {
    				if (number % innerNumber == 0 && number != innerNumber) {
    					break;
    				}
    				//如下这种写法也可以
    //				if (number == innerNumber) {
    //					System.out.println("质数" + number);
    //				}
    				
    				if (number % innerNumber == 0 && number == innerNumber) {
    					count++;
    					System.out.println("第" + count + "个质数=" + number);
    				}
    			}
    		}
    		System.out.println("----------100以内总共有" + count + "个质数!----------");
    		
    //		test();
    		test2();
    		myFor();
    
    	}
    	
    	public static void test() {
    		System.out.println("-------------------");
    		int count1 = 0, count2 = 0;
            for (int i = 5; i <= 20; i++) {
                // 每一个数一个个接受检验是否为素数
                for (int j = 2; j <= Math.sqrt(i); j++) {
                     if (i % j != 0) {
                          //不能被整除累计一次
                          count1++;
                     }
                }
                // 转为int的类型
                int num = (int) Math.sqrt(i);
                //如果累计次数num - 1个数相等则为素数
                if (count1 == (num - 1)) {
                     System.out.println("素数:" + i);
                     count2++;
                }
                // 统计素数个数
                count1 = 0;
            }
            System.out.println(count2);
    	}
    	
    	public static void test2() {
    		Scanner in = new Scanner(System.in);
    		int x;
    		System.out.println(" 请输入要求的素数范围:");// 加入一个提示语句
    		x = in.nextInt();
    		System.out.println(" 2到" + x + "内的素数有:");
    		int i, n;
    		for (i = 2; i <= x; i++)
    		{
    			for (n = 2; n <= (int) Math.sqrt(i); n++)
    				// 核心语句:内层变量<=(int)Math.sqrt(外层变量)
    				if (i % n == 0)
    					break;
    			if (n > (int) Math.sqrt(i))//判断是否为素数
    				System.out.print(" " + i);// 输出素数
    		}
    	}
    	
    	public static void myFor() {
    		
    		System.out.println("*************************");
    		for (int i = 1; i <= 5;) {
    			System.out.println("i = " + i);
    			i++;
    		}
    		System.out.println("*************************");
    		for (int i = 1; i <= 5; i++) {
    			System.out.println("i = " + i);
    			
    		}
    	}
    
    }
    


    package javase;

    import java.util.Scanner;

    /**
     * 求100以内的质数

     */
    public class PrimeNumber {

        /**
        * 求100以内的质数

        */
        public static void main(String[] args) {
            //求100以内的质数
            int number = 0;
            int innerNumber = 0;
            int count = 0; //100内有多少个质数
            for (number = 2; number <= 100; number++) {
    //            for (innerNumber = 2; innerNumber <= number; innerNumber++) {
                for (innerNumber = 2; innerNumber <= number; innerNumber++) {
                    if (number % innerNumber == 0 && number != innerNumber) {
                        break;
                    }
                    //如下这种写法也可以
    //                if (number == innerNumber) {
    //                    System.out.println("质数" + number);
    //                }
                    
                    if (number % innerNumber == 0 && number == innerNumber) {
                        count++;
                        System.out.println("第" + count + "个质数=" + number);
                    }
                }
            }
            System.out.println("----------100以内总共有" + count + "个质数!----------");
            
    //        test();
            test2();
            myFor();

        }
        
        public static void test() {
            System.out.println("-------------------");
            int count1 = 0, count2 = 0;
            for (int i = 5; i <= 20; i++) {
                // 每一个数一个个接受检验是否为素数
                for (int j = 2; j <= Math.sqrt(i); j++) {
                     if (i % j != 0) {
                          //不能被整除累计一次
                          count1++;
                     }
                }
                // 转为int的类型
                int num = (int) Math.sqrt(i);
                //如果累计次数num - 1个数相等则为素数
                if (count1 == (num - 1)) {
                     System.out.println("素数:" + i);
                     count2++;
                }
                // 统计素数个数
                count1 = 0;
            }
            System.out.println(count2);
        }
        
        public static void test2() {
            Scanner in = new Scanner(System.in);
            int x;
            System.out.println(" 请输入要求的素数范围:");// 加入一个提示语句
            x = in.nextInt();
            System.out.println(" 2到" + x + "内的素数有:");
            int i, n;
            for (i = 2; i <= x; i++)
            {
                for (n = 2; n <= (int) Math.sqrt(i); n++)
                    // 核心语句:内层变量<=(int)Math.sqrt(外层变量)
                    if (i % n == 0)
                        break;
                if (n > (int) Math.sqrt(i))//判断是否为素数
                    System.out.print(" " + i);// 输出素数
            }
        }
        
        public static void myFor() {
            
            System.out.println("*************************");
            for (int i = 1; i <= 5;) {
                System.out.println("i = " + i);
                i++;
            }
            System.out.println("*************************");
            for (int i = 1; i <= 5; i++) {
                System.out.println("i = " + i);
                
            }
        }

    }

     

    展开全文
  • 素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快。 i在2到n-1之间任取一个数,如果n能被整除...
  • 素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 性质 质数具有许多独特的性质: (1)质数p的约数只有两个:1和p。 (2)初等数学基本定理:任一大于1的...
  • 质数(又称素数): 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。按照规定,1不算素数,最小的素数是2,其后依次是3、5、7、11等等。 我们可以发现其中有些质数紧紧挨在...
  • 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该 数除了1和它本身以外不再有其他的因数;否则称为合数。 像如下表的数为素数: 我们首先定义一个列表...
  • 连续素数和 一些质数可以表示为其他连续质数的总和。 例如5 = 2 + 3,17 = 2 + 3 + 5 + 7,41 = 2 + 3 + 5 + 7 + 11 + 13。在3到N的范围内,总和应始终以数字2开头。 编写代码以找出在给定范围内满足上述性质的质数...
  • 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 一、判断一个数是否为素数: 基于定义 def is_prime(num): if num <= 1: return '%d是一个合数' % num...
  • Android项目源码显示质数素数的数学工具是一个数学工具项目源码,可以很方便的显示出固定范围的素数质数之和或者质数的数量。是一个专业性比较强的项目。一般人用不到。
  • Java求素数质数)的几种方法

    千次阅读 2019-05-08 21:19:37
    什么是素数质数)? 比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数素数 思想,怎么做才能高效? 要判断X是否为质数,就从2一直尝试到x-1的做法效率是最差的!其实只要从2一直尝试到√x,...

    什么是素数(质数)?

    比1大的整数中,除了1和它本身以外,不再有别的因数,这种整数叫做质数或素数


    思想,怎么做才能高效?

    要判断X是否为质数,就从2一直尝试到x-1的做法效率是最差的! 其实只要从2一直尝试到√x,就可以了。因为因数都是成对出现的。比如,100的因数有:1和100,2和50,4和25,5和20,10和10。看出来没有?成对的因数,其中一个必然小于等于100的开平方,另一个大于等于100的开平方。


    代码实现

    效率由高到低

    方法一(取平方根,效率高):

    package hardCode;
    
    public class 素数_质数 {
    
    	public static void main(String[] args) {
    		boolean flag;
    		for(int i=2;i<100;i++) {
    			flag=true;	//flag要放在循环里面,每个循环都要重新赋值
    			for(int j=2;j<=Math.sqrt(i);j++) {	//i取根号比除2这样效率高些
    				if(i%j==0) {
    					flag=false;
    					break;
    				}
    			}
    			if(flag) {
    				System.out.println(i+" ");
    			}
    		}
    	}
    
    }
    package hardCode;
    
    public class 素数_质数 {
    
    	public static void main(String[] args) {
    		//输出100以内的素数
    		int i=0;
    		int j=0;
    		for(i=1;i<=100;i++) {
    			for(j=2;j<=(int)Math.sqrt(i);j++) {
    				if(i%j==0) {	//如果i可以与某个小于自身又不等于1的数整除
    					break;	//那么跳出循环
    				}
    			}
    			if(j>(int)Math.sqrt(i)) {
    				System.out.println(i);
    			}
    		}
    	}
    
    }

    方法二( /2 效率一般):

    package hardCode;
    
    public class 素数_质数 {
    
    	public static void main(String[] args) {
    		boolean flag;
    		for(int i=2;i<100;i++) {
    			flag=true;	//flag要放在循环里面,每个循环都要重新赋值
    			for(int j=2;j<i/2;j++) {	//i除了2这样效率高些
    				if(i%j==0) {
    					flag=false;
    					break;
    				}
    			}
    			if(flag) {
    				System.out.println(i+" ");
    			}
    		}
    	}
    
    }

    方法三(效率最低):

    package hardCode;
    
    public class 素数_质数 {
    
    	public static void main(String[] args) {
    		boolean flag;
    		for(int i=2;i<100;i++) {
    			flag=true;	//flag要放在循环里面,每个循环都要重新赋值
    			for(int j=2;j<i;j++) {
    				if(i%j==0) {
    					flag=false;
    					break;
    				}
    			}
    			if(flag) {
    				System.out.println(i+" ");
    			}
    		}
    	}
    
    }

     

    展开全文
  • Python入门学习小记:100以内素数/质数之和

    千次阅读 多人点赞 2019-09-23 22:59:02
    今天做到一题利用for循环求100以内素数之和的题目,发现自己在Python的语法上遇到了问题:这个else是谁的?在此记录以防下次又做错啦。 题目很简单: 100以内素数之和 求100以内所有素数之和并输出。 ‪‬‪‬‪...

    今天做到一题利用for循环求100以内素数之和的题目,发现自己在Python的语法上遇到了问题:这个else是谁的?在此记录以防下次又做错啦。

    题目很简单:
    100以内素数之和
    求100以内所有素数之和并输出。 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

    素数指从大于1,且仅能被1和自己整除的整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
    可以逐一判断100以内每个数是否为素数,然后求和。
    

    一开始我的程序是这样的:

        sum = 0
        for i in range(2,100):#寻找的范围为2-99
            for j in range(2,i):
                if (i%j == 0):
                    break
                else:
                    sum += i
        print(sum)
    

    然而输出时sum却等于66705!
    这明显不对呀!
    为了初步排查我找到的素数是否有问题,修改了一下程序

    sum = 0
    for i in range(2,100):#寻找的范围为2-99
        for j in range(2,i):
            if (i%j == 0):
                break
            else:
                print(i)
                #sum += i
    #print(sum)
    

    果然输出的素数是有问题的。查看结果发现找到的素数出现了多次输出甚至输出非素数的情况,加起来当然比正确答案大的多啦。

    可是为什么会出现这样的错误呢?

    复习一下:
    break语句:用于跳出最内层的for或while循环,即一个break语句只有能力跳出当前层次的一个循环。跳出这个循环后从这个循环后面的代码继续执行。
    if-else二分支:如果满足if后的条件,就执行冒号后面的语句;否则执行else冒号后面的语句。二分支结构用于区分对if后条件的两种可能,满足条件即True,不满足条件即False,以此分别形成执行路径。

    所以,在上面这个程序中,双层for嵌套后利用了一个if-else二分支。如果满足条件:i对j取余数为零(i<j,排除了i=j的情况),说明i除了1和它本身之外还能被其他整数整除,那么这个i并不是一个素数,利用break跳出循环继续寻找素数;如果不满足这个条件,就说明找到了一个素数i,执行else冒号后面的语句打印这个素数,并返回对j的for循环。然而对j的循环是从2循环到i的前一个数,如果i是一个素数,不论j是多少都除不尽。因此,每遍历一个j→除不尽→打印i。除不尽几次就打印了几次i,使得多次输出该素数造成了输出不准确。甚至对于某个非素数i,如果与目前遍历得到的j除不尽,也会一直打印i直到i与j能够除得尽跳出对j的循环。

    再复习一下:
    for in-else语句:遍历在in后面的遍历结构,当for循环正常遍历了所有内容或由于条件不成立而结束循环,且没有因为break或return而跳出循环时,才执行else后面的语句。

    这里的“else”是for的,还是if的?显然,应该是for的。只有遍历全部j后依然除不尽的才能够认为i为素数并输出。写程序时太粗心写错了else的位置;对于Python语法的不熟练没能透彻的结合题目的意思。意识到问题所在,修改程序

    sum = 0
    for i in range(2,100):
        for j in range(2,i):
            if (i%j == 0):
                break
        else:
            sum += i
    print(sum)
    

    输出sum=1060,是正确答案!

    展开全文
  • 求解第N个质数(第N个素数)vs2010项目计算时间差不多 用的是试除法
  • 素数(也称质数),是指除了1和该数本身,不能被任何正整数整除的正整数。判断一个正整数m是否为素数,只要判断m可否被2~根号m之中的任何一个正整数整除,如果m不能被此范围中任何一个正整数整除,m即为素数,否则m...
  • 自定义函数求素数质数).py

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,095
精华内容 88,438
关键字:

素数