题目描述
一个大于等于 2 的整数,如果可以分解为 8 个或 8 个以上的素数相乘,则称其为发财数,请你输出第 n 个发财数。
样例
2
1
2
暴力枚举到10000获取质数表,直接得到答案(有点笨但能过的方法)
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 10000;
bool st[N];
int prime[N];
int get_prime(int k){//找第x个素数,筛素数
int sum=0;
for(int i=2;i<=k/i;i++){
if(k%i==0){
int s=0;
while(k%i==0)k/=i,s++;
sum+=s;
}
}
if(k>1)sum++;
return sum;
}
int main()
{
int t;
cin>>t;
vector<long long >v;
int ans=0;
for(int i=256;ans<=10000;i++){
if(get_prime(i)>=8)ans++,v.push_back(i);
}
while(t--){
int x;
cin>>x;
cout<<v[x-1]<<endl;
}
return 0;
}
blablabla