题目描述
只有素数因子为 2
、3
、5
或 7
的数称为虚数。例如:1
,2
,3
,4
,5
,6
,7
,8
,9
,10
,12
,14
,15
,16
,18
,20
,21
,24
,25
,27
等都是虚数。现在,请你编写一个程序,按上述顺序(虚数升序)查找并打印第 n
个元素。
输入输出格式
输入格式 输入包含一个整数 n
,表示要打印的第 n
个元素。
输出格式 针对输入,打印出虚数升序列表的第 n
个元素。
输入输出样例1
输入 11
输出 12
说明/提示
请根据题目描述查找数学规律。 1≤n≤103
。
#include<stdio.h>
#include<iostream>
using namespace std;
long long f[5843];
//f表示虚数数组
int main()
{
int prime[4]= {2,3,5,7};
//给定四个数字
int i,j,k;
int n;
f[1]=1;
for(i=2; i<=5842; i++)
{
f[i]=2000000001;
//初始赋最大值
for(j=0; j<4; j++)
{
/*虚数只和它之前的值以及2,3,5,7四个数有关,遍历它们,满足条件则赋值*/
for(k=i-1; k>=1; k--)
{
if(f[k]*prime[j]<=f[i-1])break;
if(f[k]*prime[j]<f[i])
f[i]=f[k]*prime[j];
//f[i]等于2,3,5,7中的一个数和它之前的一个虚数之和。
}
}
}
cin>>n;
cout<<f[n]<<endl;
return 0;
}