zoukankan      html  css  js  c++  java
  • 一本通题库1098 找大的质数

    【题目描述】

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

    【输入】

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

    对于60%的数据,6n10006≤n≤1000。

    对于100%的数据,6n2×1096≤n≤2×109。

    【输出】

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

    【输入样例】

    21

    【输出样例】

    7

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    int main()
    {
    long long int i,n;
    cin>>n;
    for(i=2;i<=sqrt(n);i++)//本来我写的是:for(i=n-1;i>=sqrt(n);i--),这一思路较为直观,直接找到大数。可是这样会超时。比如说一个大数,可能往下减上好几个,也找不到那个数。但是如果反过来,从小往上找,那样就简便多了,因为越小的数在一定范围内倍数越多,从而找到最小数。
    {
    if(n%i==0)
    {
    cout<<n/i;//除以最小质数即得到最大质数。
    return 0;
    }
    }
    return 0;
    }

  • 相关阅读:
    初识Kafka
    初学Linux (Linux_note)
    Zookeeper_ACL
    Zookeeper简单配置
    getWindow().setFlags
    设置session失效时间
    Android开发者必知的5个开源库
    oracle A用户访问B用户的表aa
    oracle 根据约束名查表名
    java ftp上载下传 遇到的问题
  • 原文地址:https://www.cnblogs.com/57xmz/p/12239438.html
Copyright © 2011-2022 走看看