求助站外水题(RE)
  • 板块学术版
  • 楼主zxh_qwq
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/1/25 10:17
  • 上次更新2023/10/24 03:08:59
查看原帖
求助站外水题(RE)
919709
zxh_qwq楼主2023/1/25 10:17

将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是质数,则称这个整数为“幸运数”。 例如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;
}
2023/1/25 10:17
加载中...