0
已解决
赵舒茁
修练者
修练者
8364 找第二大的因数
经验值:800
时间限制:1000毫秒
内存限制:128MB
题目描述 De**ion
对于一个大于等于1的自然数n:
1)如果它只有一个因数,那么这个数是1,则输出这个因数;
2)如果它只有两个因数,那么它是质数,则输出“YES”;
3)如果它有两个以上的因数,那么它是合数,则输出它第二大的因数。
输入描述 Input De**ion
输入一个大于等于1的正整数n
输出描述 Output De**ion
如果n只有一个因数,则输出这个因数;
如果n是质数,则输出“YES”;
如果n是合数,则输出它第二大的因数。
样例输入 Sample Input
样例输入1: 3 ---------------------------------------------------------- 样例输入2: 8 ---------------------------------------------------------- 样例输入3: 1
样例输出 Sample Output
样例输出1: YES ---------------------------------------------------------- 样例输出2: 4 ---------------------------------------------------------- 样例输出3: 1
数据范围及提示 Data Size & Hint
1<=n<=1000000000
赵舒茁在2023-08-28 19:02:22追加了内容
急求解
0
已采纳
王耀森
中级光能
中级光能
bool f(int q){
for(int i=2;i<=sqrt(q);i++){
if(q%i= =0){
return false;
}
}return true;
}
主函数{
int n;
输入n;
if(n= =1){
输出1;
return 0;//不能少,否则90
}
else if(f(n)){
输出"YES";
return 0;
}
else{
for(int i=n/2;i>=1;i--){
if(n%i= =0){
输出i;
结束循环
}
}
}
0
0