[蓝桥杯]ALGO-51.算法训练_Torry的困惑(基本型)

时间:2023-03-09 22:50:47
[蓝桥杯]ALGO-51.算法训练_Torry的困惑(基本型)

题目描述:

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

先上代码:

 #include <stdio.h>
#include <string.h>
#define LEN 100000
using namespace std; int main(void)
{
int n,res=;
int num[LEN+];
memset(num,,sizeof(num)); scanf("%d",&n); for (int i= ; i<LEN ; i ++)
{
if (num[i] == )
for (int j=i ; i*j<LEN ; j++)
num[i*j] = ; //非素数的置为1 if (num[i] == )
{
n --;
res = (res*i)%;
if (n==)
break;
}
} printf("%d",res);
return ;
}

C++解法

解题思路:

1.将素数的值置为0,非素数的值置为1

2.每检测到一个素数即将其累乘取模,n减1