java用约数个数定理求大数的约数
2022/1/25 20:06:49
本文主要是介绍java用约数个数定理求大数的约数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
——————————————————一个大的阶乘的如何拆分成幂的积的形式?
例如20!
1、首先求出所有的小于100的质数(素数)
private static boolean isPrime(int sum){ if (sum<2) return false; for (int i =2;i < sum;i++){ if (sum%i == 0) return false; } return true; }
20!就可以表示成这些素数的n次方的和
2、求出这些质数的阶数
例如:
例如:20! 1.先求出20以内的素数,(2,3,5,7,11,13,17,19) 2.再求各个素数的阶数 e(2)=[20/2]+[20/4]+[20/8]+[20/16]=18; e(3)=[20/3]+[20/9]=8; e(5)=[20/5]=4; ... e(19)=[20/19]=1;
private static int jie(int n,int i,int temp){ int sum = 0; if (i<=n){ sum+=n/i; return sum+jie(n,i*temp,temp); } return sum; }
3、将所有的数值套入公式
private static void test11(){ BigInteger hun = BigInteger.ONE; Vector<Integer> vector = new Vector<>(); for (int i = 1; i < 21; i++) { if (isPrime(i)) vector.add(i); } System.out.println(vector); List<Integer> list = new ArrayList<>(); for (Integer integer : vector) { list.add(jie(20, integer, integer)); } for (Integer integer : list) { hun = hun.multiply(BigInteger.valueOf(integer+1)); } System.out.println(hun); }
这篇关于java用约数个数定理求大数的约数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)