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

 

posted @ 2020-07-01 01:18  上帝的绵羊  阅读(254)  评论(0编辑  收藏  举报