public static boolean IsPrime(long number) {
int begin = 2;
int end = (int) Math.sqrt(number) + 1;
for (int i = begin; i < end; i++) {
if (number % i == 0)
return false;
for_count1++;
}
return true;
}
// 得到因子
public static Set<Long> getFactor(Long number) {
Set<Long> factors = new HashSet<Long>();
Long begin = 2L;
Long end = number;
for (Long i = begin; i < end&&number!=1; i++) {
if (number % i == 0) {
factors.add(i);
while ((number % i) == 0) {
number = number / i;
for_count1++;
}
}
for_count1++;
}
if (number != 1) {
factors.add(number);
}
return factors;
}
public static Set<Integer> getFactor1(Long number) {
Set<Integer> factors = new HashSet<Integer>();
if (number % 2 == 0) {
factors.add(2);
do {
number = number / 2;
for_count2++;
} while (number % 2 == 0);
}
int i = 3;
do {
if (number % i == 0) {
factors.add(i);
do {
number = number / i;
for_count2++;
}while (number % i == 0);
}
i = i + 2;
for_count2++;
} while (number != 1);
return factors;
}
public static Set<Long> getFactor2(Long number) {
Set<Long> factors = new HashSet<Long>();
if (number % 2 == 0) {
factors.add(2L);
do {
number = number / 2;
for_count3++;
} while (number % 2 == 0);
}
Long i = 3L;
long maxFactor = (long)Math.sqrt(number);
do {
while (number % i == 0) {
factors.add(i);
number = number / i;
for_count3++;
}
i = i + 2;
for_count3++;
} while (number != 1&&i<maxFactor);
if(number!=1){
factors.add(number);
}
return factors;
}
运算结果:
2018的因子
[2, 1009] for_count1:1010
[2, 1009] for_count2:506
[2, 1009] for_count3:15
600851475143的因子
[6857, 71, 839, 1471] for_count1:6860
[6857, 71, 839, 1471] for_count2:3432
[6857, 71, 839, 1471] for_count3:3432
分享到:
相关推荐
属于课程实例,输出一个自然数的各项因子。
关于信息学奥赛一本通网站上的1154题:亲和数:自然数a的因子是指能整除a的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求...
科研调查时得到了n个自然数,每个数均不超过1500000000。已知不相同的数不超过10000个,现在需要在其中查找某个自然数,如找到则输出并统计这个自然数出现的次数,如没找到则输出NO。 Input 输入由多组测试数据...
编写一个程序。要求将一个自然数拆分成任意个自然数相加,要求这几个数的乘积是最大的 自然数n拆分成m个自然数,要求这几个数的乘积是最大的,必为n/m及其临近数.
c++ 实现一个自然数表示成几个自然数的和,输出所有自然数和的表示方式
一本书的页码从自然数1 开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如,第6 页用数字6 表示,而不是06 或006 等。数字计数问题要求对给定书的总页码n,计算出书的全部...
一个自然数拆分成N个自然数之和的所有情况
C语言程序设计-求一个n位自然数的各位数字的积;(n 是小于10的自然数).c
对任意正整数n,设它的所有正因子为a1,a2,a3,…,ak,将其中任意2个互素的正因子放在一起,组成一个集合,称这个集合为互素的二元组集合,记作D2 (n) ;其中任意3个两两互素的正因子放在一起的集合称为互素的三元组集合,记...
拆分自然数的几种算法,用了递归和回溯法。
输入一个自然数n,求1~n之间的所有自然数之和。
(1)现在将n分解为若干个互不相同的自然数之和,且使这些自然数的乘积最大。 (2)现在将n分解为若干个自然数之和,且使这些自然数的乘积最大。 编程任务:对于给定的正整数n,编程计算问题(1)和(2)的最优分解...
自然数集(mod6)排列素数合数与因子结构,薛海明,张景刚,当把自然数集M排列成(mod6)等差数集筛法表,排在1,5两列数集M为素、合混合列且关系较为复杂,排在2,3,4,6列的数集M是众知有因倍关系的�
2.对于任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和:n=n1+n2+…+nk,其中1≤n1 ≤ n2 ≤ … ≤ nk,k≥1。自然数n的这种表示称为自然数拆分问题。试求自然数n的所有不同的拆分。
实现自然数系统,重载了+、*等符号,主要通过递归完成,有关学习离散数学递归。
8除不尽的自然数
自然数分解.c
最大公约数:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。
使用matlab建模解决自然数首位数的概率问题
自然数幂和公式的再认识,张雨辰,张小川,自然数幂求和问题古今中外几百年来始终是一个热点。研究者们致力于找到更为简洁的求和方法。文中提供了一种算法,简化了求和过程