输入一个整合判断是否为素数。

首先说一下,我们大家都知道什么是素数,素数就是只能被1和其本身所整除的数。

那么我们来说一下判断原理:素数只能被1和其本身整除的数,那么从另一个方面来说,除了1和其本身,其他的数都不能整除与他的数就是素数,那么我们的代码就可以这样来写。

代码如下:

import java.util.Scanner;//因为下面用到的Scanner类,所以要引包

public class Test {
	public static void main(String[] args) {
		// 输入一个整数判断是否是素数
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int a = sc.nextInt();// 接收输入的值,赋值给a
		boolean flag = true;// 为下面的判断定义一个标记
		// 判断输的数是否是素数
		// 使用for循环进行循环判断
		for (int i = 2; i < a; i++) {// i=2和i<a是因为我们要判断除了1和其本身,其他可以整除a的数
			// 使用if判断是否能被2到小于其本身的数,所整除
			if (a % i == 0) {// 如果a除以i取余的结果是零,那么这个数就不是素数
				flag = false;// 因为判断出不是素数,所以把值给为false
				break;// 因为已经判断出了这个数不是素数,所以继续判断下去已经无意义,使用break退出循环
			}
		}
		// 使用if判断所做的标记flag,入过为true就执行下面的内容
		if (flag && a != 1) {// 在前面我么没有判断1,所以在此加上&&
			System.out.println(a + ":是素数");
		} else {
			System.out.println(a + ":不是素数");
		}
	}
}



上面我们判断出了素数,那么如果要打印1000以内的所有素数,该怎么做呢?

代码如下:

public class Test {
	public static void main(String[] args) {
		// 输入一个整数判断是否是素数
		for (int j = 2; j <= 1000; j++) {
			boolean flag = true;// 为下面的判断定义一个标记
			// 判断输的数是否是素数
			// 使用for循环进行循环判断
			for (int i = 2; i < j; i++) {// i=2和i<a是因为我们要判断除了1和其本身,其他可以整除a的数
				// 使用if判断是否能被2到小于其本身的数,所整除
				if (j % i == 0) {// 如果a除以i取余的结果是零,那么这个数就不是素数
					flag = false;// 因为判断出不是素数,所以把值给为false
					break;// 因为已经判断出了这个数不是素数,所以继续判断下去已经无意义,使用break退出循环
				}
			}
			// 使用if判断所做的标记flag,入过为true就执行下面的内容
			if (flag) {// 在前面我么没有判断1,所以在此加上&&
				System.out.println(j);
			}
		}
	}
}