java-求质数(素数)

质数(素数):大于 1 的正整数只能被 1 和 他本身 整除
从 2 开始,到这个数 -1 为止,都不能被这个数本身整除的自然数
最小的素数是: 2

【例题】 求 1 ~ 100 之间的质数

思路
定义一个布尔型的变量,用来标识 是否被j 除尽,除尽标识为false ,说明不是质数
双层循环
外循环 遍历 1 ~ 100之间的自然数
内循环  i 去 除的数
对质数的优化:
Math.sqrt(i)  i 开平方 例: 80 =  20 * 40 ,80 可以被 20 除尽,一定可以被 40 除尽
所以就可以只除前面的数,随着左面的数越来越大,除出来的数越来越小,临边点是除与这个数等于这个数的本身
,这个数就是这个数的平方,极限值就是到开方。
对非质数的优化:
					一旦 i 发现有一个j 被除尽了,后面的j就不在算了 ,
					比如 这道题是 2 ~ 100,如果这个数被2 除尽了 就说明他不是质数,
					后面也就不用在算了

在这里插入图片描述

public class ZhiShuTest {

	public static void main(String[] args) {
		int count =0;//计算质数的个数
		boolean isflag = true;//标识i是否被j除尽,一旦除尽,修改值
		for(int i =2;i < 100 ;i++) {//外层循环遍历 1 ~ 100之间的自然数
			for(int j=2;j <= Math.sqrt(i);j++ ) {// i  去 除的数 Math.sqrt(i) 对质数的优化
				if( i % j == 0) {// i被 j 除尽 说明是非质数
					isflag = false;
					break;//对非质数的优化
				}
				
			}
			if(isflag == true) {
				System.out.println(i);//输出质数
				count++;
				
			}
			isflag = true;//重置
		}
		System.out.println("质数的个数:"+count);
		
	}

}

【例题】

从键盘输入两个数,为 上  下限,然后10个一行输出上下限间的所有质数
public class TestSix {

	public static void main(String[] args) {
		boolean isflag = true;
		int count =0;//质数的个数
		int number=0;
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入第一个数:");
		int a = scan.nextInt();
		System.out.println("请输入第二个数:");
		int b= scan.nextInt();
		for(int i = a; i < b;i++) {//遍历区间的自然数
			for(int j=2; j<=Math.sqrt(i);j++ ) {
				if(i % j == 0) {
					isflag = false;
				}
			}
			if(isflag == true) {
				
				System.out.print(i+" ");
				number ++;
				if(number % 10 == 0) {
					System.out.println(" ");
				}
				count++;
			}
			isflag = true;
		}
		System.out.println();
		System.out.println("质数的个数为:"+count);
	}

}

输出:
请输入第一个数:
2
请输入第二个数:
100
2 3 5 7 11 13 17 19 23 29  
31 37 41 43 47 53 59 61 67 71  
73 79 83 89 97 
质数的个数为:25

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值