标签:word png ram 最小 mat 简单 == middle thml
一道很简单的数论题:
先上题面
已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。
一个正整数nn。
一个正整数pp,即较大的那个质数。
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;
}
标签:word png ram 最小 mat 简单 == middle thml
原文地址:https://www.cnblogs.com/majorin/p/11747181.html