C語言 java 判斷一個數是不是質數
阿新 • • 發佈:2019-02-07
#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實現:演算法都是一樣的,只是輸入輸出不一樣而已。
測試1: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+"不是是質數"); } }
輸入一個數:
2
2是質數
測試2:
輸入一個數:
14
14不是是質數