你想嘎哈呢 2023-03-27 15:46 采纳率: 25%
浏览 19
已结题

(蓝桥杯质因数个数)为什么i可以<=n/i,为什么最后n>1时ans还要++

*
问题描述
给定正整数 n, 请问有多少个质数是 n 的约数。
输入格式
输入的第一行包含一个整数 n 。
输出格式
输出一个整数, 表示 n 的质数约数个数。
*/


```c++
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
  
    long long n=0;
    int ans=0;
    scanf("%lld",&n);
    for(int i=2;i<=n/i;i++)
    {
        if(n%i==0)
        {
            ans++;
            while(n%i==0)
            n/=i;
        }
    }
    if(n>1)
    ans++;
    printf("%d\n",ans);
  return 0;
}

```

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-27 16:43
    关注

    因为最大的因数不能超过根号下n。一个比根号n还大的数,必然相乘的另一个因数小于根号n,那么已经判断过了
    这么写可以略微快一点点。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月27日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路