将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是质数,则称这个整数为“幸运数”。 例如12=2x2x3,它有3个质因数,分别是2、2、3,而3为质数,所以12是一个幸运数。
210不是一个幸运数,因为210=2x3x5x7,它有4个质因数,分别是2、3、5、7,而4不是质数。
编程求出不大于n的所有幸运数
#include<bits/stdc++.h>
using namespace std;
bool prime[1000000];
int reslove(int n){
if(prime[n])return 1;
int cnt=0;
for(int i=2;i<=n;i++)
{
if(!prime[i])continue;
while(n%i==0){
n/=i;
cnt++;
}
}
return cnt;
}
int main()
{
memset(prime,1,sizeof(prime));
prime[0]=prime[1]=false;
int n;
scanf("%d",n);
for(int i=2;i<n;i++){
for(int j=i;j<=n;j+=i)prime[j]=false;
}
for(int i=4;i<n;i++){
if(prime[i])continue;
if(prime[reslove(i)])printf("%d/n",i);
}
return 0;
}