美文网首页pat刷题
求指定范围的素数

求指定范围的素数

作者: 李药师_hablee | 来源:发表于2019-04-26 10:50 被阅读0次

    题目描述

    令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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 101 103

    代码

    #include<stdio.h>
    #include<math.h>
    
    void findP(int M, int N);
    
    int main()
    {
        int M, N;
        scanf_s("%d %d", &M, &N);
        findP(M, N);
    
        return 0;
    }
    
    int cnt = 0;//素数个数
    int cnt2 = 0;//已打印的素数个数
    void findP(int M, int N)
    {
        int i = 2;
        int t;
        while (cnt<N)
        {
            bool flag = 1;
            for (int j = 2; j < sqrt(i)+1; j++)
            {
                if (i == 2)
                {
                    break;
                }
                else if (i % j == 0)
                {
                    flag = 0;
                    break;
                }
            }
            if (flag == 1)
            {
                cnt++;
                if (cnt >= M && cnt <= N)
                {
                    printf("%d", i);
                    cnt2++;
                    if (cnt < N)
                    {
                        if (cnt2 % 10 == 0)
                        {
                            printf("\n");
                        }
                        else
                        {
                            printf(" ");
                        }
                    }
                }
                else if (cnt > N)
                {
                    break;
                }
            }
            i++;
        }
    }
    

    输出

    捕获1.PNG

    相关文章

      网友评论

        本文标题:求指定范围的素数

        本文链接:https://www.haomeiwen.com/subject/iiqfnqtx.html