我想找出一个数的因子数,比如900,小于它的平方根。例如:900的因子有27个,我想找出小于900根的因子数,即30个,它们是1,2,3,4,5,6,9,10,12,15,18,20,25。
我目前有这个程序,通过计算质因数来找到因数的数量。例如:140的质因数是:2^2*5*7。所以因子数是:(2+1)(1+1)(1+1)[素因子的乘方]
import java.io.*;
import java.util.*;
class Solution
{
// Program to print all prime factors
static void primeFactors(int n)
{
TreeMap tm=new TreeMap();
int times=0;
// Print the number of 2s that divide n
while (n%2 == 0)
{
System.out.println("2");
if(!tm.containsKey(2))
{
tm.put(2,1);
}
else
{
times=(int)tm.get(2);
tm.put(2,times+1);
}
n = n/2;
}
// n must be odd at this point. So we can skip one element (Note i = i +2)
for (int i = 3; i <= Math.sqrt(n); i = i+2)
{
// While i divides n, print i and divide n
while (n%i == 0)
{
System.out.println(i);
if(!tm.containsKey(i))
{
tm.put(i,1);
}
else
{
times=(int)tm.get(i);
tm.put(i,times+1);
}
n = n/i;
}
}
// This condition is to handle the case whien n is a prime number
// greater than 2
if (n > 2)
{
System.out.println(n);
if(!tm.containsKey(n))
{
tm.put(n,1);
}
else
{
times=(int)tm.get(n);
tm.put(n,times+1);
}
}
/////////////////////////////////////////////////////////////////////////////
Set set = tm.entrySet();
System.out.println(tm);
Iterator num = set.iterator();
int key=0;
int sum=1;
while (num.hasNext())
{
Map.Entry number =(Map.Entry)num.next();
sum=sum*((int)number.getValue()+1);
}
System.out.println(sum);
}
public static void main(String args[])
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
primeFactors(n);
}
}
如果你有n的因子数,只需整数除以2,就可以得到小于平方根的因子数。这是因为n小于sqrt(n)的每个因子d对应于一个大于sqrt(n)的因子(即n/d),所以这些因子的数量将是总数的一半(除非n是一个完全平方,在这种情况下sqrt(n)是一个额外的因子)。但是,整数除以2可以处理转角情况。实际上,27/2=13如所愿。
问题内容: 我正在寻找一种以任意精度(例如点后50位数左右)计算平方根的方法。 在python中,可以使用Decimal轻松访问它: 看到强大的功能后,我浏览了文档,但没有发现任何类似的内容。 因此,我唯一的选择是编写某种数值计算方法,该方法将迭代地尝试计算答案吗? 问题答案: 这是我自己的平方根计算实现。在等待答案时,我决定尝试一下计算平方根的方法。它有很多方法,但最后我发现通过减法 pdf 链
问题内容: 在python或标准库中的某个地方是否存在整数平方根?我希望它是准确的(即返回一个整数),如果没有解决办法,可以吠叫。 此刻,我滚动了自己的幼稚: 但这很丑陋,我不太相信大整数。我可以遍历正方形,如果超出了该值,则放弃,但是我认为做这样的事情有点慢。另外我想我可能正在重新发明轮子,像这样的东西肯定已经存在于python中了… 问题答案: 牛顿的方法在整数上工作得很好: 这将返回的最大整
python或标准库中是否有整数平方根?我希望它是精确的(即返回一个整数),如果没有解决方案,就吠叫。 此刻我卷起了我自己天真的一个: 但是它很难看,而且我不相信它是大整数。我可以遍历这些方块,如果超过了这个值就放弃,但我认为这样做会有点慢。而且我想我可能会重新发明轮子,像这样的东西肯定已经存在于python中了。。。
本文向大家介绍Java实现求小于n的质数的3种方法,包括了Java实现求小于n的质数的3种方法的使用技巧和注意事项,需要的朋友参考一下 质数概念 质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。 最小的素数是2,也是素数中唯一的偶数;其他素数都是奇数。质数有无限多个,所以不存在最大的质数。 一:根据定义去求解: 也是最
问题内容: 我们是否可以仅使用Java API而不使用定制的100行算法来计算Java 中a的平方根? 问题答案: 这项工作完美!超过65536位的数字非常快!
一个字符串一般有几个子串? 这里有一个链接[http://ocw.mit.edu/courses/electrice-engineering-and-computer-science/6-006-Introduction-to-algorithms-Fall-2011/lecture-videos/mit6_006F11_lec21.pdf]