首页 > 编程知识 正文

求1到100阶乘和的算法,求100阶乘的约数

时间:2023-05-06 15:14:32 阅读:272546 作者:3245

题目

思路

约数的概念:约数就是因数。整数a除以整数b,除得的商正好是整数而没有约数,我们就说a能被b整除,或者b能整除a。a称为b的倍数,b称为a的约数。

约数个数定理:

想要使用约数个数定理,就需要将这个数分解成对应的质因子,然后取指数再+1相乘。

在这道题中,我们统计100的阶乘可以分解成质因数的乘积,其中每个质因子出现的次数。

将每个数的次数(arr[j])+1在乘积,即为所得约数解。

Code public class Main {public static void main(String[] args) {//存储每个数分解完后,出现的次数(幂数)int arr[] = new int[101];//记录阶乘的每位数字分解成质因子后的指数结果long sum=1;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++;}}//最后i1==j就是分解到最后一个质数,将这个质数记录arr[j]++;}//根据公式,约数个数=(a1+1)*(a2+1)*(an+1)...a就是质因数出现次数(幂数)for(int i=2;i<=100;i++) {if(arr[i]!=0){sum*=(arr[i]+1); }}//输出结果System.out.println(sum);}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。