质因数分解

    技术2024-06-22  177

    测试地址:

    【题目描述】

    原题来自:NOIP 2012 普及组

    已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。

    【输入】

    输入只有一行,包含一个正整数 n。

    【输出】

    输出只有一行,包含一个正整数 p,即较大的那个质数。

    【输入样例】

    21

    【输出样例】

    7

    【提示】

    数据范围与提示:

    对于 30% 的数据,n ≤ 1000;

    对于全部数据,6 ≤ n ≤ 2×10^9 。

    【思路】

    该题已明确表明 n 为两个不同质数的乘积,故不用再去判断其因子是否为质数。

    找到这个数最小的因数,再用这个数除以这个最小的因数即可(即得到较大的那个因数)

    这么做有两个省力之处:

    1.不用挨个分解质因数

    2.不用判断素数

    【AC代码】

    #include<cstdio> #include<cmath> int main(){ int n; scanf("%d", &n); for(int i = 2; i <= sqrt(n); i++){ if(n%i == 0){ printf("%d", n/i); break; } } return 0; }

     

    Processed: 0.023, SQL: 9