PAT乙级1013——数素数
题目:
题目详情 - 1013 数素数 (20 分) (pintia.cn)
思路:既然要输出第M个素数和第N个素数中间的所有素数,那么我们先将前N个素数全部求出来,存储到一个数组中,然后输出这个数组的第M到第N个元素
这道题要注意的是输出的格式,我真的调了好久!
下面是AC的代码:
#include <iostream> #include <cmath> int IsPrime(int n) //判断n是否是素数 { if (n==2) { return 1; //2是素数,return true } else { int i; for (i=2;i<=sqrt(n);i++) { if (n%i==0) { return 0; //不是素数 } } } return 1; } int main() { using namespace std; int M,N; cin>>M>>N; int arr[N+1]; //浪费一个位置,第一个位置不用,为了方便计数 int n=2; int i=1; //计数,数组里存储了多少素数 while (i<=N) { int judge=IsPrime(n); if (judge) //说明n是素数 { arr[i]=n; i++; } n++; } //下面是输出 int l=1; for (int j=M;j<=N;j++) //输出M位到N位之间的素数 { if (l!=10) { if (j!=N) cout<<arr[j]<<' '; else cout<<arr[j]; l++; } else { if (j!=N) cout<<arr[j]<<endl; else cout<<arr[j]; l++; } if (l==11) l=1; } return 0; }
再贴另一个的答案:PAT乙级1013 - 臭咸鱼 - 博客园 (cnblogs.com)
原来不用数组也可以?不过其实思路都是一样的
本文来自博客园,作者:EowynTang,转载请注明原文链接:https://www.cnblogs.com/tangcoder/p/15672602.html

浙公网安备 33010602011771号