「上帝一声不响,一切皆由我定」|

BadBadBad__AK

园龄:1年6个月粉丝:13关注:6

P10720 [GESP202406 五级] 小杨的幸运数字 题解

题意

如果一个数的质因子中只有两个不同的数则输出 1,否则输出 0

思路

从第一个质因子遍历到 sum 的话很明显是 O(nt) 最大是 n10 很明显会炸掉。

所以遍历到 sum 是不行的,考虑正整数 n 最大的质因数是 n 所以遍历到 n 即可。

代码

#include <bits/stdc++.h>
using namespace std;
int lucky(int sum) {//函数处理是否为幸运数 
	int ans=0;
	int a=sum;
	for(int i=2; i*i<=a; i++) {
		if(sum%i==0) {
			ans++;
			while(sum%i==0) {
				sum/=i;
			}
		}

	}
	if(sum>1) {
		ans++;
	}
	if(ans==2) {
		return 1;
	} else {
		return 0;
	}
}
int main() {
	int n;
	cin>>n;
	int a;
	while(n--) {
		scanf("%d",&a);
		cout<<lucky(a)<<endl;
	}
	return 0;
}

本文作者:BadBadBad__AK

本文链接:https://www.cnblogs.com/BadBadBad/p/18303742/P10720

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   BadBadBad__AK  阅读(338)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起