蓝桥杯 Torry的困惑(基本型) C++算法训练 HERODING的蓝桥杯之路

Kitty ·
更新时间:2024-11-13
· 653 次阅读

资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
  Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
输入格式
  仅包含一个正整数n,其中n<=100000。
输出格式
  输出一行,即前n个质数的乘积模50000的值。
样例输入

1

样例输出

2

解题思路:
最近的题目都比较友好呢,话不多说,开始解题。解题关键为一是求前n个质数,二是求乘积取50000的模。求前n个质数用while循环包含for循环的算法,while循环是控制质数为n个,for循环是为了找质数,注意找质数的过程有捷径,就是找到该数的平方根如果还没有找到因子就说明这个数是质数。详情见代码:

#include using namespace std; int a[100000];//储存质数 int main() { int n; cin >> n; int num = 0; int sum = 1; int i = 2; while(num < n){//判断质数的数量 bool flag = true;//判断是否为质数的标志 for(int j = 2; j <= sqrt(i*1.0); j ++) { if (i % j == 0) { flag = false; break; } } if (flag == true){ a[num++] = i; } i ++; } for(i = 0; i < num; i ++) { sum = (sum * a[i]) % 50000;//取模 } cout << sum; return 0; } HERODING23 原创文章 20获赞 21访问量 1343 关注 私信 展开阅读全文
作者:HERODING23



c+ 蓝桥杯 训练 C++ 算法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号