1. 程式人生 > >C語言 java 判斷一個數是不是質數

C語言 java 判斷一個數是不是質數

#include<stdio.h>
#include<math.h>
/*
質數判斷的基本思路:對於正整數n(n>1),用2~根號n去除它,如果存在整除的情況,則n不是質數
否則,必定為質數。
*/
void main()
{
    int n,i,k;
    do
    {
        printf("輸入一個正整數:");
        scanf("%d",&n);
    }while(n<=0);
    if(n==1)
        printf("%d不是質數",n);
    else
    {
        k=(int)sqrt(n);
        for(i=2;i<=k;i++)
        {
            if(n%i==0)//如果n能整除2~sqrt(n),那麼就不是質數
            {
                break;
            }
        }
        if(i>k)
            printf("%d是質數\n",n);
        else
            printf("%d不是質數\n",n);
    }
}

輸入:3

結果:

輸入一個正整數:3
3是質數

java實現:演算法都是一樣的,只是輸入輸出不一樣而已。

package Ctojava;
/*
質數定義為在大於1的自然數中,除了1和它本身以外 不再有其他因數的數。
*/
import java.util.Scanner;

public class IsPrime
{
	public static void main(String[] args)
	{
		Scanner scanner=new Scanner(System.in);
		System.out.println("輸入一個數:");
		int n=scanner.nextInt();
		if(n<=1)
		{
			System.out.println(n+"不是質數");
			System.exit(0);//退出程式
		}
		int i;
		int k=(int) Math.sqrt(n);
		for(i=2;i<=k;i++)
		{
			if(n%i==0)//如果找到一個因數i
				break;
		}
		if(i>k)//如果找不到因數那就是質數
			System.out.println(n+"是質數");
		else 
			System.out.println(n+"不是是質數");
	}
}
測試1:
輸入一個數:
2
2是質數
測試2:
輸入一個數:
14
14不是是質數