September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,30 +1,27 @@
|
|||
class BigRationalFindPerfectNumbers {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("Running BigRational built-in tests");
|
||||
if (BigRational.testFeatures()) {
|
||||
int MAX_NUM = (1 << 19);
|
||||
System.out.println();
|
||||
System.out.println("Searching for perfect numbers in the range [1, " + (MAX_NUM - 1) + "]");
|
||||
BigRational TWO = BigRational.valueOf(2);
|
||||
for (int i = 1; i < MAX_NUM; i++) {
|
||||
BigRational reciprocalSum = BigRational.ONE;
|
||||
if (i > 1)
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(i).reciprocal());
|
||||
int maxDivisor = (int)Math.sqrt(i);
|
||||
if (maxDivisor >= i)
|
||||
maxDivisor--;
|
||||
for (int divisor = 2; divisor <= maxDivisor; divisor++) {
|
||||
if ((i % divisor) == 0) {
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(divisor).reciprocal());
|
||||
int dividend = i / divisor;
|
||||
if (divisor != dividend)
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(dividend).reciprocal());
|
||||
}
|
||||
public class BigRationalFindPerfectNumbers {
|
||||
public static void main(String[] args) {
|
||||
int MAX_NUM = 1 << 19;
|
||||
System.out.println("Searching for perfect numbers in the range [1, " + (MAX_NUM - 1) + "]");
|
||||
|
||||
BigRational TWO = BigRational.valueOf(2);
|
||||
for (int i = 1; i < MAX_NUM; i++) {
|
||||
BigRational reciprocalSum = BigRational.ONE;
|
||||
if (i > 1)
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(i).reciprocal());
|
||||
int maxDivisor = (int) Math.sqrt(i);
|
||||
if (maxDivisor >= i)
|
||||
maxDivisor--;
|
||||
|
||||
for (int divisor = 2; divisor <= maxDivisor; divisor++) {
|
||||
if (i % divisor == 0) {
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(divisor).reciprocal());
|
||||
int dividend = i / divisor;
|
||||
if (divisor != dividend)
|
||||
reciprocalSum = reciprocalSum.add(BigRational.valueOf(dividend).reciprocal());
|
||||
}
|
||||
}
|
||||
if (reciprocalSum.equals(TWO))
|
||||
System.out.println(String.valueOf(i) + " is a perfect number");
|
||||
}
|
||||
if (reciprocalSum.equals(TWO))
|
||||
System.out.println(String.valueOf(i) + " is a perfect number");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue