Luogu P1075 质因数分解题解
Posted majorin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu P1075 质因数分解题解相关的知识,希望对你有一定的参考价值。
一道很简单的数论题:
先上题面
题目描述
已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
一个正整数nn。
输出格式
一个正整数pp,即较大的那个质数。
输入输出样例
输入 1
21
输出 1
7
解析:
仔细读题后,我们能够发现
1.正整数是两素数的乘积,那么我们就直接循环找那个最大的素因数即可
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum;
scanf("%d",&sum);
for(int i=sum-1;i>=1;i--)
if(sum%i==0)
{
printf("%d",i);break;
}
return 0;
}
然而
发现有四个点TLE了,
于是发现了第二点。
2.
正整数 sum= a*b (a是较小素数,b是较大素数)
如果循环找b的话,循环次数应该是sum-b,即sum-sum/a,
但是a最小可能是2,所以逆向循环最少循环sum/2次。
而正向循环,最少只要2次。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum;
scanf("%d",&sum);
for(int i=2;i<sum;i++)
if(sum%i==0) {printf("%d",sum/i);break;}
return 0;
}
以上是关于Luogu P1075 质因数分解题解的主要内容,如果未能解决你的问题,请参考以下文章