~~哈哈这题都写不出来,还被封号了,你是想当封号斗罗了吗,太逊了!!~~
以上都是~~认真的~~开玩笑的,
## 我将告诉你这题如何解!!!!!^\\/^
首先要知道唯一分解定理:一个数能且只能分解为一组质数的乘积。可知,若输入的数满足题目条件,他就只能分解为两个质数的乘积。所以在比他小且大于1的自然数中,只有那两个数能整除它,之间不可能再有任何合数或质数能整除它了,因为最小的能整除它的合数已经是他本身了。
所以代码就很容易实现了
```c++
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n;++i)
if(n%i==0)
{
printf("%d",n/i);
return 0;
}
}
```
还可以优化,将$i<=n$,变成$i<=sqrt(n)$,**还可再次简化**,变成$i<=n/i$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
所以代码就很容易实现了
```c++
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n/i;++i)
if(n%i==0)
{
printf("%d",n/i);
return 0;
}
}
```
by liyixuan2024 @ 2023-08-30 17:35:20
@[liyixuan2023](/user/995838)
Ta果然是~~封号斗罗~~manuibi
by liyixuan2024 @ 2023-08-30 17:40:51