【★】第十一届蓝桥杯(国赛)- 阶乘约数

第十一届蓝桥杯(国赛)- 阶乘约数

题目描述:

题目描述

解题思路:

  • 质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。
  • 每个 合数 都可以写成几个质数(也可称为素数)相乘的形式 ,这几个质数就都叫做这个合数的 质因数
  • 质数(素数):质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
  • 合数(质数的反义词):合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。

数学公式:

任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1α1 ∗ p2α2 …… ∗ pkαk
约数个数 = (a1 + 1)(a2 + 1)……(ak + 1)

算法思路:
1.分解质因数:一个数 i 的质因数,j2ii1%j==0 则是约数,将已经分解的数去除(如 8/2=4,4/2=2,2是最后一个,最后得出 8=2*2*2
2.将分解的质因数的幂数存放在一个数组中,在循环中将他们次数依次 +1,最后相乘求和。

代码如下:

public class FactorialDivisor {
	 public static void main(String [] args) {
		int arr[] =new int[101];
		for (int i = 2; i <=100; i++) {
			int j=2,i1=i;
			while (i1!=j) {
				if (i1%j==0) {
					arr[j]++;
					i1=i1/j;
				}
				else {
					j++;
				}
			}
			arr[j]++;
		}
		long sum=1;
		for (int i = 2; i <=100; i++) {
			if (arr[i]!=0) {
				sum*=(arr[i]+1);
			}
		}
		System.out.println(sum);
	}
}

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值