根据输入数字,计算大于一个数的最小素数。
话不多说,直接贴码。
package com.fuxuemingzhu.countprime.main;
import java.util.Scanner;
/**
*
* Title: Main
*
*
* Description:计算大于某个输入数的最小素数
*
*
* @author fuxuemingzhu
*
* @email fuxuemingzhu@163.com
*
* @date 2014年10月27日 下午4:01:41
*/
public class CountPrime {
/**
* inputNum 输入的整数
*/
private static int inputNum = 0;
/**
*
* Title: main
*
*
* Description:程序的主函数,从这里进入
*
*
* @param args
*/
public static void main(String[] args) {
// 给一句引导输入的引导语
System.out.println("请输入需要计算的整数:");
// 获取键盘输入
getInput();
// 输出结果
output();
}
/**
*
* Title: getInput
*
*
* Description:获取键盘的输入结果
*
*/
private static void getInput() {
// //利用Scanner 类 获取键盘操作
Scanner inputScanner = new Scanner(System.in);
inputNum = inputScanner.nextInt();
// ///关闭inputScanner
inputScanner.close();
}
/**
*
* Title: output
*
*
* Description:输出操作,同时进行了输入的判断
*
*/
private static void output() {
if (checkInput(inputNum)) {
System.out.println("大于这个数的最小素数是:" + countPrime(inputNum));
} else {
System.out.println("输入错误!需要输入一个正整数!");
}
}
/**
*
* Title: checkInput
*
*
* Description:需要输入一个正整数
*
*
* @param num
* @return 输入是否正确
*/
private static boolean checkInput(int num) {
if (num >= 1) {
return true;
}
return false;
}
/**
*
* Title: countPrime
*
*
* Description:计算大于num的最小素数
*
*
* @param num
* @return 大于num的最小素数
*/
private static int countPrime(int num) {
// ///大于这个数的最小素数
int answer = num + 1;
// 上面+1是从这个数的下一个数去判断,而不判断这个数本身是不是一个素数
while (isPrime(answer)) {
answer++;
}
return answer;
}
/**
*
* Title: isPrime
*
*
* Description:判断一个数是不是素数
*
*
* @param num
* @return 一个数是不是素数
*/
private static boolean isPrime(int num) {
boolean check = false;
// //计算到这个数的平方根,减少计算步骤
for (int i = 2; i <= Math.sqrt(num); i++) {
// /判断一个数整除变量i的余数是否为0,为零说明能整除,则不是素数
if (num % ((int) i) == 0) {
return true;
}
}
return check;
}
}
附运行截图。