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语言学习专栏


如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。

猜你喜欢

转载自blog.csdn.net/weixin_45761327/article/details/106853068