C語言Torry的困惑(提高型)

寫在前面:這裏是小王成長日誌,一名在校大學生,想在學習之餘將自己的學習筆記分享出來,記錄自己的成長軌跡,幫助可能需要的人。歡迎關注與留言。

題目:

題目鏈接:https://www.dotcpp.com/oj/problem1485.html

題目 1485: [藍橋杯][算法提高VIP]Torry的困惑(提高型)

時間限制: 1Sec 內存限制: 128MB 提交: 2091 解決: 565

題目描述
Torry從小喜愛數學。一天,老師告訴他, 像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴 老師。老師愣住了,一時回答不出來。於是Torry求助於會編程的你,請你算出前n個質數的乘積。不過,考慮到你才接觸編程不久,Torry只要你算出這 個數模上50000的值。
輸入
僅包含一個正整數n,其中n< =100000。
輸出
輸出一行,即前n個質數的乘積模50000的值。
樣例輸入
1
樣例輸出
2

C語言解法

中間flag變量1.記得每次開始的時候要初始化2.可以使用j>sqrt(i)來代替flag的作用

#include <stdio.h>
#include <math.h>

int main(void)
{
    long long int product = 1;
    long int n, i = 2, j;
    int flag = 1; //是否是質數 1是 0 否
    scanf("%ld", &n);
    while (n)
    {
        flag=1;
        for (j = 2; j <= sqrt(i); j++)
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        if (flag == 1 || i == 2)
        {
            n--;
            product = product * i % 50000;
        }
        i++;
    }

    printf("%lld", product);

    return 0;
}


都看到這裏了,各位哥哥姐姐叔叔阿姨給小王點個贊 關個注 留個言吧,和小王一起成長吧,你們的關注是對我最大的支持。
有事沒事進來看看吧 : 小王的博客目錄索引
C語言專欄看這 : C語言學習專欄


如果以上內容有任何不準確或遺漏之處,或者你有更好的意見,就在下面留個言讓我知道吧-我會盡我所能來回答。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章