ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2020-05-09 11:07:12  阅读:349  来源: 互联网

标签:50000 Torry int 质数 HERODING 蓝桥 while 乘积


资源限制
时间限制: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<bits/stdc++.h>

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;
} 

标签:50000,Torry,int,质数,HERODING,蓝桥,while,乘积
来源: https://blog.csdn.net/HERODING23/article/details/105989840

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有