PAT (乙级) Practice |(1013) C++ --附素数的判断

题目描述:

1013 数素数 (20 分)

令 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

分析:此题的关键是如何判断是素数和第1个到第10000个素数的范围。


结果:

提交时间 状态 分数 题目 编译器 耗时 用户
2019/3/13 16:37:49

答案正确

20 1013 C++ (g++) 15 ms 方人也几点

代码:

#include<iostream>
#include<math.h>
using namespace std;
int ans[1000010];

bool judge(int num){
      int i,sqr=sqrt(num*1.0);
	for(i=2;i<=sqr;i++)
		if(num%i==0)return 0;
	return 1;
}

int main(){
      int m,n;
      int counter = 1;
      cin>>m>>n;
      for(int i=2;i<1000010;i++){
            if(judge(i)) ans[counter++] = i;
            if(counter>n) break;
      }
      counter = 0;
      for(;m<=n;m++){
           if(counter%10==0 && counter) cout<<endl;
           counter++;
           (counter%10==0||m==n)?cout<<ans[m]:cout<<ans[m]<<" ";
      }

      return 0;
}

如何判断素数?

解答(百度百科):在一般领域,对正整数n,如果用2到  之间的所有整数去除,均无法整除,则n为质数(质数大于等于2 不能被它本身和1以外的数整除)。

发布了26 篇原创文章 · 获赞 9 · 访问量 8233

猜你喜欢

转载自blog.csdn.net/weixin_41664064/article/details/88535980