题目描述
在一个遥远的星球上,有一个神秘的数字系统。这个系统中的数字都是由两个不同的质因数组成的。例如,数字 15 可以分解为 3 和 5,而数字 21 可以分解为 3 和 7。但是,这个星球上的居民发现了一个规律:对于每一个这样的数字,他们总是会选择其中较大的那个质因数进行崇拜。现在,你需要帮助他们编写一个程序,找出给定数字的较大质因数。
输入一个整数 n(保证 n 是由两个不同的质因数组成的合数),输出其较大的质因数。
输入格式
输入共一行。
第一行输入整数 n ,表示指定数字。
输出格式
输出共一行。
第一行输出一个整数,即 n 的较大质因数
输入输出样例
输入 #1
15
输出 #1
5
说明/提示
6 ≤ n ≤ 10^9。
//其实这道题很简单,写下素数函数就可以。
//这几个月因为学习很忙,并且家里出了些事,所以没时间更新,跟大家说声对不起。
#include<iostream>
using namespace std;
// 判断一个数是否为质数
bool is_prime(int n){
if(n<=1)return 0;
for(int i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
long long n;
cin>>n;
long long p=-1;
// 检查2作为质因数的情况
while (n%2==0){
p=2;
n/=2;
}
// 检查大于2的奇数作为质因数的情况
for(long long i=3;i*i<=n;i+=2){
while(n%i==0){
if(is_prime(i)){
p=i;
}
n/=i;
}
}
// 检查剩余的n是否为质数
if(n>2&&is_prime(n)){
p=n;
}
cout<<p;
return 0;
}