每日盘题——PAT(乙级1013)——数素数

/*
 * Copyright (c) 2014, 烟台大学计算机学院
 * All rights reserved.
 * 文件名称:test.cpp
 * 作    者:李晓凯
 * 完成日期:2019年 4 月 7 日
 * 版 本 号:v1.0
 *
 * 问题描述:
 * 输入描述:
 * 程序输出:

*/

令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​,请输出 P​M​​ 到 P​N​​ 的所有素数。

输入格式:

输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:

输出从 P​M​​ 到 P​N​​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

解题思路:

     运用判断素数的方法,开始求素数,找到第m个素数开始输出,直到找到第n个素数,输出为止,再就是控制输出的格式,每行的最后一个数后面都没有空格,然后就通过啦。

代码:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		int m,n,num = 0,i=2;
		boolean flag = false;
		m = input.nextInt();
		n = input.nextInt();
		while(num < n) {                              //循环到第n个素数
			if(is_Prime(i)) {
				num ++ ;                     //计算素数个数
				if(num >= m) {               //从第m个素数开始输出
					System.out.print(i);
					flag = (((num - m + 1) % 10 == 0) || (num == n)) ;   //当输出10个数或者最后一个数时,flag = true;
					System.out.print(flag == true ? "\n" : " ");         //flag = true;作换行处理,flag = false,输出空格
				}
			}
			i++;
		}
	}
	public static boolean is_Prime(int n) { 		//判断是否为素数
		int i;
		for(i = 2 ; i <= Math.sqrt(n) ; i ++) {
			if(n % i == 0) {
				break ;
			}
		}
		if(i > Math.sqrt(n))
			return true ;
		return false ;
	}
}

运行截图:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值