j
package test1;
//2018/11/30
//求100以內的所有素數
public class Main10 {
public static void main(String[] args){
Main10 test=new Main10();
System.out.println("100以內的素數:");
int count=0;
for(int i=2;i<100;i++) {
if(test.isPrimeNumber(i)==true) {
System.out.print(i+" ");
count++;
if(count%10==0) {
System.out.print("\n");
}
}
}
}
public boolean isPrimeNumber(int number){
boolean flag=true;
if(number<=0) {
throw new IllegalArgumentException("number是不合法的參數!");
}
for(int i=2;i<=Math.sqrt(number);i++) {
if(number%i==0) {
flag=false;
break;
}
}
return flag;
}
}
下面是另一種
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//檢驗一個數是不是素數,如果所有小於它的素數都不能將它整除,那么它就是素數
public class Main11 {
public static void main(String[] args) {
List<Integer> primes=getPrimes(100);
System.out.println("100以內素數如下:");
for(int i=0;i<primes.size();i++) {
Integer prime=primes.get(i);
System.out.print(prime+" ");
if(i%10==0) {//每10個換行
System.out.println();
}
}
}
/*
* 求n以內的所有素數
*
*/
private static List<Integer> getPrimes(int n){
List<Integer> result =new ArrayList<Integer>();
result.add(2);//第一個素數先放入
for(int i=3;i<=n;i+=2) { //遍歷,減少循環次數,步長為2
if(!divisble(i,result)) { //判斷是否有素數能被整除
result.add(i); //如果不能整除,加入列表List
}
}
return result; //返回列表list
}
/*
* 判斷n能否能被整除
*
*/
private static boolean divisble(int n,List<Integer> primes) {
for(Integer prime:primes) { //遍歷列表List
if(n % prime == 0) {
return true;
}
if(prime>=Math.sqrt(n)) //如果超過平方根,還沒找到整除,退出循環
break;
}
return false;
}
}