西北工业大学C程序设计基础NOJ T023

description

若一个世纪的 100 个年号中不存在一个素数,则这个世纪称为合数世纪。求第 n 个合数世纪(公元 0 年起始)。

input

输入 n,为整数

output

输出合数世纪起始与结束年份,用空格隔开

sample_input

1 

sample_output

1671800 1671899 

solution

源代码

#include <stdio.h>

int judgecompos(int n) //在n~n+99之内进行素数累加
{
    int count = 0;
    for (int i = n + 1; i < n + 100; i += 2) //省去偶数,节约时间
    {
        for (int j = 2; j * j <= i; j++)
        {
            if (i % j == 0)
            {
                count++; //合数累加
                break;
            }
        }
    }
    if (count == 50)
        return 1;
    else
        return 0;
}

int main()
{
    int begin = 0, n = 0;
    scanf("%d", &n);
    for (int i = 0;; i += 100) //这里取了一个巧,i从1671700开始,i从0开始也是没问题的
    {
        if (judgecompos(i) == 1)
        {
            begin++;
        }
        if (n == begin)
        {
            int i2 = i + 99;
            printf("%d %d", i, i2);
            break;
        }
    }
    return 0;
}
Last modification:November 20, 2022
如果觉得我的文章对你有用,请随意赞赏~