RosettaCodeData/Task/Benfords-law/Java/benfords-law.java

30 lines
895 B
Java
Raw Permalink Normal View History

2015-02-20 09:02:09 -05:00
import java.math.BigInteger;
2017-09-23 10:01:46 +02:00
import java.util.Locale;
2015-02-20 09:02:09 -05:00
2017-09-23 10:01:46 +02:00
public class BenfordsLaw {
2015-02-20 09:02:09 -05:00
2017-09-23 10:01:46 +02:00
private static BigInteger[] generateFibonacci(int n) {
BigInteger[] fib = new BigInteger[n];
fib[0] = BigInteger.ONE;
fib[1] = BigInteger.ONE;
for (int i = 2; i < fib.length; i++) {
fib[i] = fib[i - 2].add(fib[i - 1]);
2015-02-20 09:02:09 -05:00
}
2017-09-23 10:01:46 +02:00
return fib;
2015-02-20 09:02:09 -05:00
}
2017-09-23 10:01:46 +02:00
public static void main(String[] args) {
BigInteger[] numbers = generateFibonacci(1000);
2015-02-20 09:02:09 -05:00
2017-09-23 10:01:46 +02:00
int[] firstDigits = new int[10];
for (BigInteger number : numbers) {
firstDigits[Integer.valueOf(number.toString().substring(0, 1))]++;
}
2015-02-20 09:02:09 -05:00
2017-09-23 10:01:46 +02:00
for (int i = 1; i < firstDigits.length; i++) {
System.out.printf(Locale.ROOT, "%d %10.6f %10.6f%n",
i, (double) firstDigits[i] / numbers.length, Math.log10(1.0 + 1.0 / i));
}
2015-02-20 09:02:09 -05:00
}
}