当前位置: 首页 > article >正文

蓝桥杯 2020 国赛 阶乘约数

 public static void main(String[] args) {
	        int[] st = new int[101]; // 从1到100
	        for (int i = 1; i <= 100; i++) {
	            int k = i; // 不能让分解结果影响循环
	            for (int j = 2; j*j <= k; j++) {  // i 为被分解数
	            // 以sqrt(n)为界 如果一个数在左边,必然有一个数在右边,不用求完 只需要求一半(i*i)就行 就可以判断是不是质数
	                if (k%j==0) {
	                    // 不是质数 开始分解
	                    while (k%j==0) {
	                        k/=j;
	                        // 对应位置次数+1
	                        st[j]++;
	                    }
	                }
	            }
	            if (k>1) {
	                st[k]++;
	            }
	        }
	        long res = 1;
	        for (int i = 0; i <  101; i++) {
	            if (st[i] != 0) {
	                res = res* (st[i]+1);
	            }
	        }
	        System.out.println(res);
	    }

这个代码有点类似于求n以内的质因数(可以看我之前的文章),

之前求质因数代码是这样的:

这里的res++不在while循环里面,因为求的是质因数,而本题求的是因数,所以res必然在while里面(str[j]++),然后公式就是所有数(1-100)的因数和的乘机(要加1是因为还包括本身)


http://www.kler.cn/a/571410.html

相关文章:

  • 自学微信小程序的第十天
  • [liorf_localization_imuPreintegration-2] process has died
  • python全栈-Linux基础
  • 【Linux】进程信号——信号保存和信号捕捉
  • 【大模型】什么是蒸馏版大模型
  • 【零基础到精通Java合集】第二十三集:G1收集器深度解析
  • 鸿蒙5.0实战案例:基于ArkUI的透明页面效果
  • BambuStudio学习笔记:GCode 类
  • 15款单色颗粒渐变扭曲抽象艺术背景图AI/PSD格式设计素材 Abstract Grainy Gradient Background
  • CubeMX创建STM32F407工程
  • DeepSeek未来发展趋势:开创智能时代的新风口
  • Ubuntu20.04双系统安装及软件安装(十三):录屏软件kazam
  • wpa_supplicant源码剖析-main.c解析
  • 【微知】如何通过mlxlink查看Mellanox网卡和光模块相关的信息?( mlxlink -d 01:00.0 -m)
  • 拥抱健康养生,开启活力生活
  • 智慧园区大数据云平台建设总体方案,平台方案架构-智慧园区大数据平台(320页原件Word)
  • Windows 11【1001问】查看Windows 11登录用户的18种方法
  • 无人机的飞行控制器技术详解
  • C++ OpenGL 帧缓冲(Framebuffer)理论与实现
  • Token设计指南:实现动态用户信息与权限管理