题目描述
已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
1≤n≤2×10^9
输入
输入一个正整数 n。
输出
输出一个正整数 p,即较大的那个质数。
样例输入输出
输入:21 输出:7
思路:
为了节约时间与确保答案正确性,我们可以先暴力求出最小的质数用n去除,得到最后的结果。
STEP 1:写判断质数的函数,不多说了
STEP 2:输入,循环(这里循环结束的条件不用写j*j<=a,因为找到直接跳出,后面也不会被遍历到)
STEP 3:如果是质数,且能整除n,就输出相对应的质数(n/j)跳出,结束。
代码
#include<bits/stdc++.h> using namespace std; bool isPrime(int x) {if(x<2){return false;}for(int i=2;i*i<=x;i++){if(x%i==0){return false;}}return true; } int main() {int a;scanf("%d",&a);for(int j=2;j<=a;j++){if(isPrime(j)&&a%j==0){printf("%d",a/j);break;}}return 0; }
运行结果