你想嘎哈呢 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日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了