结论
根据题目中正规数的定义,可以得出结论:
设一个正规数为\(n\),则\(n\)有且只有一种质因数分解的结果:
\(n=2^p\times3^m\times5^n\)
其中\(p,m,n\)均为自然数
所以,我们就可以通过质因数分解的方法来判断\(n\)是否是正规数
代码
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int main() {
cin >> n;
for (int i = 2; i * i <= n; i++) { // 质因数分解
if (i > 5) { // 质因数大于5,不是正规数
printf("Irregular Number");
return 0;
}
else {
while (n % i == 0) { // 否则就在n中把2或3全部除掉
n /= i;
}
}
}
// 质因数分解后,有可能n还有一部分没除掉,所以这里加一个特判
if (n > 5) printf("Irregular Number");
else printf("Regular Number");
return 0;
}
标签:因数分解,int,题解,Number,正规,判定,printf
From: https://www.cnblogs.com/panda-lyl/p/18577664