求质数
//键盘录入一个正整数 x ,判断 x 是否为质数
//质数:只能被 1 和 本身 整除
//7 = 1 * 7 质数
//8 = 1 * 8 2 * 4 合数
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//求质数
//键盘录入一个正整数 x ,判断 x 是否为质数
//质数:只能被 1 和 本身 整除
//7 = 1 * 7 质数
//8 = 1 * 8 2 * 4 合数
//1.键盘输入一个正整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数 x:");
int number = sc.nextInt();
//定义一个变量,表示标记
//标记number是否为一个质数
//true:是一个质数
//false:不是质数
//最初表示number是一个质数
boolean flag = true;
//2.判断
//写一个循环,从2开始,判断到number-1
//看这个范围内,有没有数字可以被number整除
for(int i=2;i<number;i++){
//i 依次表示这个范围内的每一个数字
//看number是否能被i整除就可以了
if(number%i==0){
flag = false;
System.out.println(number + "不是一个质数");
break;
}
}
//只有当这个循环都结束了,才能表示这个范围之内的所有数字都判断完毕了
//此时才能断定number是一个质数
if(flag){
System.out.println(number+"是一个质数");
}else{
System.out.println(number+"不是一个质数");
}
}
}
结果
优化:
//优化
package test;
public class Test4 {
public static void main(String[] args) {
//100000
//2~99999
//循环次数:将近10w次
//简化思路:
//81
//1 * 81
//3 * 27
//9 * 9
//以81的平方根9,为中心
//假设 a * b = 81
//那么a和b中,其中有一个必定是小于等于9的
//另外一个是大于等于9的
//假设,都是大于9---9.1 * 9.1 > 81
//假设,都是小于9---8.9 * 8.9 < 81
//其中一个数字一定是小于等于平方根
//另外一个数字一定是大于等于平方根
//for(int i=2;i<number的平方根;i++)
}
}