java判断质数
㈠ 用java语言判断一个数是不是质数
下面是我用JavaScript写的素数函数,供参考,大同小异
PrimeA=function(n,nth){/* 小于n的素数表
参数nth 指定返回第n个素数
*/
//vart0=Time.now5();
/*
方法1:利用isPrime 废弃!
vart=[];
for(vari=2;i<n+1;i++){
if(isPrime(i)){
t.push(i)
}
}
consolelog('方法1:耗时:'+(+Time.now5()-(+t0)));
returnt
*/
//方法2:利用筛法
varp=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59];//自己往后补充,越多越好,可以加快检测小素数的效率
if(nth&&n<=669){
returnp[n-1]
}
if(!nth&&n<2){
return[]
}
if(n<=5000&&!nth){
for(vari=0;i<100;i++){
varj=p.indexOf(n-i);
if(j>-1){returnp.slice(0,j+1)};
}
returnp
}
varm=nth?Math.ceil(n*Math.log(n)+1000):n; //pn∼nln(n)
// for(vari=5001;i<=m;i+=2){
vari=5001;
while(i){
vart=Math.floor(Math.sqrt(i)),pl=p.length;
for(varj=0;j<pl;j++){//p.length
if(i%p[j]==0){
break
}elseif(p[j+1]>t){
p.push(i);
if(nth&&pl==n-1){
returni
}
break;
}
}
if(!nth&&i>=n-1){
returnp
}
i+=2;
}
returnp
//方法3:Wilson测试
}
㈡ java怎么判断一个数是不是一个质数
java">/* 判断一个数是否是素数(质数) */
public boolean isPrime(int number){
for (int i = 2; i < number; i++){
if(number%i == 0){
return false;
}
continue;
}
return true;
}
㈢ Java语句判断一个数是不是质数。。。只写判断条件就好。。
质数指能被1和自身整除,这个不能仅仅一个判断条件解决,判断一个数是不是质数你还要判断1到这个数的所有数,必须要循环
int num=7;
boolean shu=false;
for(int i=1;i<num;i++){
if(num%i==0){
shu=false;
break;
}
shu=true;
}
㈣ java,判断一个数是不是质数的程序
这是求素数中为了提高效率的一个的技巧
其实写成Math.sqrt(n)最好
为了提高效率,不用一定计算到n.
当然计算到n是没错的
-----------补充-----------
除去自身和1,能够整除一个数的最小值应该是2,最大值不会超过这个数的一半,所以不存在一个大于这个数一半的数能够整除这个数,所以在楼主的方法中只要计算到n/2就好了..
㈤ 用 java 怎么判断一个数是否为质数
应该是有函数吧
建议直接网络搜索
逻辑存在很大的问题,判断质素的守则是除了本身和1,其他数内都不能将自己整除容,所以楼主你应该做的事情是将你输入的数循环与2开始到你输入的数-1的数依次比较,有一次整除没有余数就说明不是素数。按照你的代码修改应该是:
bool flag=false;
for(int i=2;i<num;i++)
{
if(num%i==0)
{
flag=true;
break;
}
}
接下来判断flag的值,如果是 true代表不是质数,flase的话代表是质数
㈥ java怎么判断素数
1、目前使用较有效的方法是试除法。用试除法判断一个自然数a是不是素数时,用版各个素数权从小到大依次去除a,如果到某一个素数正好整除,这个a就可以断定不是素数;如果不能整除,当不完全商又小于这个素数时,就不必再继续试除,可以断定a必然是素数。
2、素数又称质数。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
3、素数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。基于质数定义的基础之上而建立的问题有很多世界级的难题,如哥德巴赫猜想等。目前为止,人们未找到一个公式可求出所有素数,所以还没有固定的判断公式。
4、一般记住100以内的素数就可以了。有2、3、5、7、11、13、19、17、23、29、37、31、41、47、43、53、59、61、71、67、73、83、89、79、97,一共25个。
㈦ java怎样判断一个数是不是质数
由于大于2的质数一定是奇数(奇数又不一定都是质数),所以,在判断一个自然数是不是质数时,首先要看它是奇数还是偶数。如果是大于2的偶数,这个数肯定不是质数,而是合数;如果是奇数,那就有可能是质数。在这种情况下,一般使用以下两种方法:
(1)查表法:
主要是指查“质数表”。编制质数表的过程是:按照自然数列,第一个数1不是质数,因此要除外,然后按顺序写出2至500的所有自然数,这些数中2是质数,把它留下,把2后面所有2的倍数划去,2后面的3是质数,接着再把3后面所有3的倍数划去,如此继续下去,剩下的便是500以内的全部质数。
最早使用上述方法来寻求质数的人,是古代希腊数学家埃拉托斯特尼,由于他在开始时,先把自然数写在一块蜡板上,把不是质数的数(合数)分别刺上一个孔,这样,在蜡板上就被刺上了许多象筛子一样的孔,后来,大家就把这种寻求质数的方法叫做“筛法”。
这类的质数表还可以编制成数字范围更大一些的,如1000以内质数表等。判断一个自然数是不是质数,如在表所规定的数字范围内,即可用查表的方法进行判断。
(2)试除法:
在手头上没有质数表的情况下,可以用试除法来判断一个自然数是不是质数。例如判断143、179是不是质数,就可以按从小到大的顺序用2、3、5、7、11……等质数去试除。一般情况下用20以内的2、3、5、7、11、13、17、19这8个质数去除就可以了。如143,这个数的个位是3,排除了被2、5整除的可能性,它各位数字的和是1+4+3=8,也不可能被3整除,通过口算也证明不能被7整除,当试除到11时,商正好是13,到此就可以断定143不是质数。
对179试除过程如下:
179÷2=59……2
179÷3=66……1
179÷5=35……4
179÷7=25……4
179÷11=16……3
179÷13=13……10
179÷17=10……9
当179÷17所得到的不完全商10比除数17小时,就不需要继续再试除,而断定179是质数。这是因为2、3、5、7、11、13、17都不是179的质因数,因此,179不会再有比17大的质因数,或者说179不可能被小于10的数整除,所以,179必是质数无疑。
综上所述,用试除法判断一个自然数a是不是质数时,只要用各个质数从小到大依次去除a,如果到某一个质数正好整除,这个a就可以断定不是质数;如果不能整除,当不完全商又小于这个质数时,就不必再继续试除,可以断定a必然是质数。
㈧ 用java如何写代码去判断质数和合数
首先介绍下:质数是除了本身和1以外,没有质因数,就是没有数能够整除之;合数是除了本身和1以外还有第三个数能整除之。
具体示例代码如下:
publicclassDemo2{
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
System.out.print("请输入一个数:");
intnum=scan.nextInt();
intindex=0;//使用一个数来标记是质数还是合数
for(inti=2;i<num;i++){
if(num%i==0){
index++;
}
}
if(index==0){//index等于0表示质数
System.out.println("这是个质数");
}
else{//index大于0表示合数
System.out.println("这是个合数");
}
}
}
需要注意的是:1不算质数也不算合数。
㈨ java判断质数
质数(素数)就是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
可以通过以回下工具类答方法来实现:
public boolean isPrime(int n){
for(int i=2;i<=n/2;i++){
if(n%i == 0)
return false;
}
return true;
}
备注:n/2的作用就是只取出n一半的数,因为任何数都不可能是比它1/2大的数整除的(除了这个数本身)。
㈩ Java 判断质数的方法
纯手打!!!不懂就抄恢复问我!
希望能帮到你!
public static void isPrime() {
int count = 0;// 统计所有的质数的个数的,计数器
int num = 0;// 要判断的数
do {
int temp = 0;// 判断有几个整除数
for (int a = num; a >= 1; a--) {
if (num % a == 0) {
temp++;
}
}
if (temp == 2) {// 只有两个整除数的数就是质数
System.out.print(num + " ");
count++;// 有一个质数了,那么计数器就要加1
if (count % 10 == 0) {// 那么就要换行
System.out.println();
}
}
num++;// 一个数判断完了,换第二个数
} while (count <= 100);
}