mirror of
https://bitbucket.org/Mattrixwv/projecteulerjava.git
synced 2025-12-06 17:13:58 -05:00
Updated for performance
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
//ProjectEuler/Java/Problem19.java
|
//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem20.java
|
||||||
//Matthew Ellison
|
//Matthew Ellison
|
||||||
// Created: 03-14-19
|
// Created: 03-14-19
|
||||||
//Modified: 03-28-19
|
//Modified: 06-17-20
|
||||||
//What is the sum of the digits of 100!?
|
//What is the sum of the digits of 100!?
|
||||||
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
|
//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2019 Matthew Ellison
|
Copyright (C) 2020 Matthew Ellison
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
@@ -28,7 +28,7 @@ import java.math.BigInteger;
|
|||||||
|
|
||||||
public class Problem20 extends Problem{
|
public class Problem20 extends Problem{
|
||||||
//The largest number that will be multiplied
|
//The largest number that will be multiplied
|
||||||
private static final Integer TOP_NUM = 100;
|
private static final int TOP_NUM = 100;
|
||||||
|
|
||||||
public Problem20(){
|
public Problem20(){
|
||||||
super("What is the sum of the digits of 100!?");
|
super("What is the sum of the digits of 100!?");
|
||||||
@@ -36,20 +36,20 @@ public class Problem20 extends Problem{
|
|||||||
public void solve(){
|
public void solve(){
|
||||||
//The number that is being generated
|
//The number that is being generated
|
||||||
BigInteger num = new BigInteger("1");
|
BigInteger num = new BigInteger("1");
|
||||||
Long sum = 0L; //The sum of the digits of num
|
long sum = 0L; //The sum of the digits of num
|
||||||
|
|
||||||
//Start the timer
|
//Start the timer
|
||||||
timer.start();
|
timer.start();
|
||||||
|
|
||||||
//Run through every number from 1 to 100 and multiply it by the current num to generate 100!
|
//Run through every number from 1 to 100 and multiply it by the current num to generate 100!
|
||||||
for(Integer cnt = TOP_NUM;cnt > 1;--cnt){
|
for(int cnt = TOP_NUM;cnt > 1;--cnt){
|
||||||
num = num.multiply(BigInteger.valueOf(cnt));
|
num = num.multiply(BigInteger.valueOf(cnt));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get a string of the number because it is easier to pull appart the individucal characters
|
//Get a string of the number because it is easier to pull apart the individual characters
|
||||||
String numString = num.toString();
|
String numString = num.toString();
|
||||||
//Run through every character in the string, convert it back to an integer and add it to the running sum
|
//Run through every character in the string, convert it back to an integer and add it to the running sum
|
||||||
for(Integer cnt = 0;cnt < numString.length();++cnt){
|
for(int cnt = 0;cnt < numString.length();++cnt){
|
||||||
Character temp = numString.charAt(cnt);
|
Character temp = numString.charAt(cnt);
|
||||||
sum += Integer.valueOf(temp.toString());
|
sum += Integer.valueOf(temp.toString());
|
||||||
}
|
}
|
||||||
@@ -65,5 +65,5 @@ public class Problem20 extends Problem{
|
|||||||
/* Restuls:
|
/* Restuls:
|
||||||
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
|
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
|
||||||
The sum of the digits is: 648
|
The sum of the digits is: 648
|
||||||
It took 375.798 microseconds to solve this problem.
|
It took 137.199 microseconds to solve this problem.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user