题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断一个数是不是素数:只能被1和本身整除。故从2开始除,不需要到n,也就是循环条件是 < n 就可以,这之间只要被整除了,那么他就不是素数了
质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
源码如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 判断101-200之间有多少个素数,并输出所有素数。
* 1.程序分析:判断一个数是不是素数:只能被1和本身整除。
* 故从2开始除,不需要到n,也就是循环条件是 < n 就可以,
* 这之间只要被整除了,那么他就不是素数了
*
* 质数(prime number)又称素数,有无限个。
* 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
* @author point9
*/
public class FindPrimeNumber {
public static void main(String[] args) {
System.out.println("该程序可判断x-y之间有多少个素数(包含x,y)");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入起始数字:");
int beginNum = scanner.nextInt();
if (beginNum < 2) {
System.out.println("起始数字输入不合法,请从新输入起始数字 : ");
beginNum = scanner.nextInt();
}
System.out.println("请输入结束数字:");
int endNum = scanner.nextInt();
if (endNum < beginNum) {
System.out.println("结束数字输入不合法,请从新输入结束数字 : ");
endNum = scanner.nextInt();
}
List<Integer> primeList = getPrimeNumberList(beginNum,endNum);
System.out.println(beginNum+"-"+endNum+"之间有"+primeList.size()+"个素数,分别为:"+primeList.toString());
}
/**
* 传入一个范围,得到该范围内的所有素数集合
* @param beginNum
* @param endNum
* @return
*/
private static List<Integer> getPrimeNumberList(int beginNum, int endNum) {
List<Integer> result = new ArrayList<>();
for (int i = beginNum; i <= endNum; i++) {
if (numberIsPrime(i)) {
result.add(i);
}
}
return result;
}
/**
* 传入任意一个数,判断这个数是否为素数
* 思路:判断一个数是不是素数:只能被1和本身整除
* 说明:从2开始除,不需要到n,也就是循环条件是 < n 就可以,这之间只要被整除了,那么他就不是素数了
* @param num
* @return
*/
private static boolean numberIsPrime(int num) {
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
测试截图:
原文地址:http://www.point9.top/index.php/2019/02/17/
点九博客 www.point9.top
点九论坛 bbs.point9.top
点九邮箱 [email protected]
Web全栈技术交流
点击链接加入群聊【Web全栈交流群】:https://jq.qq.com/?_wv=1027&k=5rnUzsF