判断一个数是否是质数

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,能被整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数

如何判断一个数是否是质数:

代码1:

 1     /**
 2      * 判断给定的数字是否为素数(质数)
 3      * @param num
 4      * @return
 5      */
 6     public static boolean isPrime(int num){
 7         if(num < 2){
 8             return false;
 9         }
10
11         for(int i = 2;i < num;i++){
12             if(num % i == 0){
13                 return false;
14             }
15         }
16
17         return true;
18     }

代码2:

 1     /**
 2      * 判断给定的数字是否为素数(质数)
 3      * @param num
 4      * @return
 5      */
 6     public static boolean isPrime(int num){
 7         if(num < 2){
 8             return false;
 9         }
10
11         for(int i = 2;i*i < num;i++){
12             if(num % i == 0){
13                 return false;
14             }
15         }
16
17         return true;
18     }

总结:代码2相对于代码1效率更高

判断质数的技巧:

根据质数的定义,在判断一个数n是否是质数时,我们只要用1至n-1去除n,看看能否整除即可。但我们有更好的办法。先找一个数m,使m的平方大于n,再用<=m的质数去除n,如果都不能整除,则n必然是质数。如我们要判断1993是不是质数,50*50>1993,那么我们只要用1993去 除<50的质数就可以了。100以内的质数有25个,还是比较好记的,我们只要记熟100以内质数,就可以快速判断10000以内的数是不是质数了。

希望有更优算法的朋友能给我提出建议和指正。

时间: 2024-10-27 07:33:25

判断一个数是否是质数的相关文章

判断一个数是否为质数

在软件开发的过程中,很多问题就像是应用题,有很多中解答的方式,但是结果都是一样,然而方式也有更加简单,易懂的. 例如标题所示,判断一个数是否为质数: 1. Static bool IsAdd (int n) { if(n%2!=0) { return true; } else { return false; } } 2. Static bool IsAdd (int n) { if(n%2!=0) { return true: }return false: } 3. Static bool Is

(hdu step 2.1.2)How many prime numbers(判断一个数是否是质数)

题目: How many prime numbers Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8513 Accepted Submission(s): 2716   Problem Description Give you a lot of positive integers, just to find out how many pr

判断一个数是否是质数(素数)

质数(prime number)又称素数,有无限个. 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. // 封装一个函数,实现判断一个数是否是质数的功能 function isZS(m){ for(var i = 2; i < m;i++){ if(m % i === 0){ //return m + "不是质数"; return false;//不是质数返回false } } //return m + "是质数"; return true;

判断一个数是否是质数?

判断一个数是否是素数(质数) 思路:除了自身和1以外,不能被其他数整除. 注意点: 1.必须用for循环实现 2.判断是否是素数,所以她的返回值应该是true或者false. 3.如果num%i===0了,那么一定不是素数.只有出了1和自身以外所有的数都不能整除,那么才能说她是素数. (1)算法完整遍历 function isPrime(num){ //除了自身和1以外,不能被其他数整除. for(var i=2;i<num;i++){ if(num%i===0){ return false;

判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路

定义:约数只有1和本身的整数称为质数,或称素数. 计算机或者相关专业,基本上大一新生开始学编程都会接触的一个问题就是判断质数,下面分享几个判断方法,从普通到高效. 1)直观判断法 最直观的方法,根据定义,因为质数除了1和本身之外没有其他约数,所以判断n是否为质数,根据定义直接判断从2到n-1是否存在n的约数即可.C++代码如下: bool isPrime_1( int num ) { int tmp =num- 1; for(int i= 2;i <=tmp; i++) if(num %i==

JavaScript判断一个数是否为质数

//判断用户输入的是否为质数 const readline = require("readline-sync"); console.log("请输入一个数:"); let num = readline.question() - 0; while (isNaN(num) || num <= 0) { console.log("输入有误,请重新输入"); num = readline.question() - 0; } while(num ==

JS判断一个数是否为质数

function isPrime(number) { if (typeof number !== 'number') { // 不是数字 return false; } if (number < 2) { return false; } if (number === 2) { return true; } else if (number % 2 === 0) { return false; } var squareRoot = Math.sqrt(number); for(var i = 3;

判断一个数是偶数还是素数 做相应处理并排序输出

1 //有10个两位整数,把这些数作以下变化,如果它是素数, 2 //则把它乘以2,若它是偶数则除以2,其余的数减1, 3 //请将变化后的10个数按从小到大的次序打印出来. 4 //2017.3.7 5 #include <stdio.h> 6 #include <stdlib.h> 7 #include <math.h> 8 /* 9 判断整数n是否为质数 10 */ 11 int isPrimeNum(int n) 12 { 13 int isPrime = 1;

java判断一个数是否为素数[转]

http://blog.csdn.net/lwcumt/article/details/8027586 import java.util.Scanner; //质数又称素数,是指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 public class PrimeNumber { public static void main(String[] args) { Scanner scan = new Scanner(System.in);// 扫描器,接收控制台输入信息 Sy