1. 程式人生 > >java質數判斷/質數因子/所有質數(素數)*

java質數判斷/質數因子/所有質數(素數)*

1.質數(素數)數判斷:
boolean isPrime(int number) {
        boolean isPrime = true;
        for (int i = 2; i <= Math.sqrt(number); i++) {
              if (number % i == 0) {
                  isPrime = false;
               }
         }
         return isPrime;
}
2.質數因子
import java.util.Scanner;
public class Main{
	public static void main(String[] args)
	{
		Scanner sc=new  Scanner(System.in);
		int num=sc.nextInt();
		sc.close();
		int tmp=1;
		boolean isfirst=true;
		while(tmp<=num)
		{
			int i=2;
			while(tmp*i<=num&&num%(tmp*i)!=0)
			{
				i++;
			}
			tmp=tmp*i;
			if(tmp<=num)
			{
					if(!isfirst)
					{
						System.out.print(" ");
					}
					else {
						isfirst=false;
					}
					System.out.print(i);
			}
		}
	}
}
3.某個整數內的所有質數 (某數如果是質數,他的整數倍一定不是質數,進行標記處理)
import java.util.Scanner;
public class test{
	public static void main(String[] args)
	{
		Scanner sc=new  Scanner(System.in);
		int n=sc.nextInt();
		sc.close();
		int[] flag=new int[n];//標誌陣列
		//從2開始遍歷到根號n
		for(int i=2;i*i<n;i++)//i*i<n====i<Math.sqrt(n)
		{
			//如果未被標記則為質數,從i倍開始標記它的所有倍數
			if(flag[i]==0)
			{
				for(int j=i;i*j<n;j++)
				{
					flag[i*j]=1;
				}
			}
		}
		
		//從2開始遍歷輸出結果
		for(int i=2;i<n;i++)
		{
			if(flag[i]==0)
			{
				System.out.println(i);
			}
		}		
	}
}