您的位置:首页 > 其它

关于素数的古老话题

2017-12-02 20:44 148 查看
人对素数的基本想法:

package welcome;

import java.util.Scanner;

public class 素数1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int x = in.nextInt();
boolean isPrime = true;
if(x == 1)
isPrime = false;
for(int i = 2; i < x-1; i++)
{
if(x % i == 0)
{
isPrime = false;
break;
}
}
if(isPrime)
{
System.out.println("它是素数");
}
else
{
System.out.println("它不是素数");
}
System.exit(0);
}

}
package welcome;
import java.util.Scanner;

public class 素数2 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int x = in.nextInt();
boolean isPrime = true;
if(x == 1 || x % 2 == 0)
{
isPrime = false;
}
else
{
for(int i = 3; i < Math.sqrt(x); i+=2)
{
if(x % i == 0)
isPrime = true;
}
}
if(isPrime)
{
System.out.println("它是素数");
}
else
{
System.out.println("它不是素数");
}
}

}
高级一点的想法:
package welcome;

public class 构造前50个素数的表 {

public static void main(String[] args) {
// TODO Auto-generated method stub
//判断是否能被已知的素数整除
int [] primes = new int[50];
primes[0] = 2;
int cnt = 1;
Main_loop:
for(int x = 3; cnt < primes.length; x++)
{
for(int i = 0; i < cnt; i++)  //*****注意cnt的双重作用
{
if(x % primes[i] == 0)
{
continue Main_loop;
}
}
primes[cnt++] = x;    //除了cnt,注意自加的妙用
}
for(int k: primes)
{
System.out.print(k+" ");
}
System.out.println();
}

}








package welcome;

public class 计算机想法构造素数表 {

public static void main(String[] args) {
// TODO Auto-generated method stub
boolean [] isPrime = new boolean[100];
for(int i = 2; i < isPrime.length; i++)
{
isPrime[i] = true;
}
for(int i = 2; i < isPrime.length; i++)
{
if(isPrime[i] == true)
{
for(int k = 2; k*i < isPrime.length; k++)
{
isPrime[k*i] = false;
}
}
}

for(int i = 0; i < isPrime.length; i++)
{
if(isPrime[i])
{
System.out.print(i+" ");
}
}
System.out.println();
}

}








                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: