PAT_乙级_1013. 数素数 (20)

题目链接:点击打开链接

 

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

输入格式:

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

输出格式:

输出从PM到PN的所有素数,每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
我的c++:
#include<iostream>
#include<cmath>//sqrt(value)头文件
using namespace std;
bool prime(int value)//若value是素数,返回1,不是返回0.  
{
  int i = 2;
  if (value == 0 || value == 1)//素数是一个大于1的自然数,不包括0 1  
  {
    return false;
  }
  for (; i <= sqrt(value); i++)
  {
    if (value%i == 0)
    {
      return false;
    }
  }
  return true;
}
int main()
{
  int m, n;//范围[m,n]
  int figure=2;
  int count =0;
  int inner_count = 0; //在范围[m, n]里的第inner_count个素数,控制换行
  cin >> m >> n;
  while (count <= n)
  {
    if (prime(figure))//是素数
    {
      count++;//第count个素数
      if (count >= m&&count <= n)
      {
        inner_count++;
        if (inner_count % 10 == 1)//输出每行第一个数字
        {
          cout << figure;
        }
        else
        {
          cout << ' '<<figure;//每行最后一个素数后面没有空格
        }
        if (inner_count % 10 == 0)//每10个素数换行
        {
          cout << endl;
        }
      }
    }
    figure++;//被测试的自然数,2,3,4,5,6……
  }
  return 0;
}

======

2015.7.18

 

import java.util.*;//输入
import static java.lang.System.*;//输出
import java.math.*;//sqrt()
public class Main 
{
	public boolean prime(int value)//判断素数方法
	{  
	    int i = 2;
	    if(value==2)
	    	return true;
	    if(value%2 == 0)  
	        return false; 
	    for (i=2; i <=Math.sqrt(value); i++)  
	    {  
	        if (value%i == 0)  
	            return false;
	    }
		return true;
	}  
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		Scanner cin=new Scanner(System.in);
		Main M=new Main();
		int figure=2,count=0,change_line=0;
		int m=0,n=0;
		m=cin.nextInt();
		n=cin.nextInt();
		while(count<=n)
		{
			if(M.prime(figure))
			{
				count=count+1;
				if(count>=m&&count<=n)
				{
					change_line=change_line+1;
					if(change_line%10==1)
						out.print(figure);
					else
					{
						out.print(" ");
						out.print(figure);
					}
					if(change_line%10==0)
						out.print('\n');
				}
			}
			figure=figure+1;
		}
	}
}

 

 

 

第4号测试点超时,有用java写出来的人请通知我一下,我的邮箱python_hk@outlook.com 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值