题目
时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
令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 <nobr aria-hidden="true"> 1 </nobr> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mn> 1 </mn> </math>01 103
分析:
求Pm到Pn个素数,两个问题,
1.如何确定从m到n
2.控制格式
对于问题1,每次判断该数是素数,计数器加一,当计数器到达[m,n]内输出
对于问题2,每次输出再开计数器加一,该计数器加到10换行
还有一个小问题,第10000个素数是10W+
代码(Java)
import java.util.*;
public class Main {
static boolean judge(int x) {
for(int i=2;i*i<=x;i++)
if(x%i==0)
return false;
return true;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int num=0;
int gs=0;
boolean flag=false;
for(int i=2;i<=1000000;i++) {
if(judge(i)) {
num++;
if(num>=a && num<=b) {
gs++;
if(!flag)
flag=true;
else
System.out.print(" ");
System.out.print(i);
if(gs%10==0) {
System.out.println();
flag = false;
}
}
if(num>b)
break;
}
}
in.close();
}
}
代码(cpp)
#include<iostream>
using namespace std;
bool judge(int x){
for(int i=2;i*i<=x;i++)
if(x%i==0)
return false;
return true;
}
int main(){
int a,b;
int num,gs;
bool flag;
cin>>a>>b;
num = gs = 0;
flag = false;
for(int i=2;i<=1000000;i++) {
if(judge(i)) {
num++;
if(num>=a && num<=b) {
gs++;
if(!flag)
flag=true;
else
cout<<" ";
cout<<i;
if(gs%10==0) {
cout<<endl;
flag = false;
}
}
if(num>b)
break;
}
}
return 0;
}