学习任务:

视频学习素数的判断

动手编程实现素数的判断

考考你

什么是素数?

引用百度百科的定义:质数又称素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数。

需求:输入一个数判断它是否是素数。

分析:

1不是素数。

2、3都是素数。

其它数怎么判断?

比如:11

先找到可能的因数,从2到10是可能的因数,分别去除11,分别是:2、3、4、5、6、7、8、9、10

比如:15

先找到可能的因数,从2到14是可能的因数,分别是:2、3、4、5、6、7、8、9、10、11、12、13、14

其实,我们只需要拿出一半数去除这个数就可以了,因为另一半数也不是这个数的因数:

比如11:

从2到5分别去除11,分别是:2、3、4、5

5怎么得到?

11除以2取整数为5。

比如:15

从2到7分别去除15,分别是:2、3、4、5、6、7

根据上边的分析得到循环结构的关键部分如下:

关系表达式:控制因数的范围,从2到x/2,循环一次因数增加1。

循环体:拿因数去除这个数,如果能整除则不为素数,则退出循环。

控制语句:循环一次因数增加1。

代码如下:

import java.util.Scanner;

/**
 * 面向过程编程-while循环结构-判断素数
 * 
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class WhileDemo2 {

	public static void main(String[] args) {

		// 设一个布尔变量,为true表示是素数,为false表示不是素数
		boolean isPrime = true;

		// 输入一个数
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入一个大于0的整数:");
		int x = scanner.nextInt();

		if (x<=0) {
			System.out.print("请输入一个大于0的整数:");
		}else {
			if (x == 1) {// 排除1
				isPrime = false;
			} else {
				int i=2;
				while(i<=x/2) {
					if (x % i == 0) {//可以被整除说明不是素数
						isPrime = false;
						break;
					}
					i++;
				}
			}
			if (isPrime) {
				System.out.println(x + "是素数");

			} else {
				System.out.println(x + "不是素数");
			}
		}

	}

}

请参考上边的程序实现判断一个数是否是合数。

什么是合数?

引用百度百科:合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。与之相对的是质数,而1既不属于质数也不属于合数。

提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题