PTA 乙级 1013 数素数 (20分) C/C++
今天这个题的输出形式很坑爹,难度到是没多大
C++实现(C直接改一改输入输出就行):
1 #include<iostream> 2 #include<cmath> 3 4 using namespace std; 5 6 /*判断素数(利用平方根的方法判断)*/ 7 bool isprime(int i) { 8 for (int j = 2; j <= sqrt(i); ++j) { 9 if (i % j == 0) { 10 return 0; 11 } 12 } 13 return 1; 14 } 15 16 int main() { 17 /*M和N*/ 18 int m = 0, n = 0; 19 /*素数个数*/ 20 int num = 0; 21 /*正整数*/ 22 int con = 2; 23 /*输出空格标志位*/ 24 int flag = 1; 25 cin >> m >> n; //输入 26 while (num < n) { //循环寻找范围内的素数 27 if (isprime(con)) { 28 num++; //素数个数累加 29 if (num <= n && num >= m) { //判断素数是否位于范围内 30 if ((num - m + 1) % 10 == 0 && num != m) { //10个素数回车换行 31 cout << con << endl; flag = 0; 32 } 33 else { cout << con; flag = 1; } 34 if (num == n)flag = 0; //最后一个数后面不输出空格 35 if (flag == 1)cout << " "; //根据标志位输出空格 36 } 37 } 38 con++; //正整数增长 39 } 40 return 0; 41 }
注意判断素数的方法,利用平方根判断不会导致运算超时(测试点4)
默默地一点点变强,细节决定成败