题目链接:点击打开链接
令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 。