Adjusted to improve performance

This commit is contained in:
2020-06-15 12:02:33 -04:00
parent 0540c808c5
commit 0b4cdebfe9
5 changed files with 30 additions and 30 deletions

View File

@@ -1,11 +1,11 @@
//ProjectEuler/Java/Problem1.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 03-28-19
//Modified: 06-15-20
//What is the sum of all the multiples of 3 or 5 that are less than 1000
//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
it under the terms of the GNU Lesser General Public License as published by
@@ -25,13 +25,13 @@ package mattrixwv.ProjectEuler.Problems;
public class Problem1 extends Problem{
//The largest number to be checked
private static final Integer TOP_NUM = 999;
private static final int TOP_NUM = 999;
public Problem1(){
super("What is the sum of all the multiples of 3 or 5 that are less than 1000");
}
public void solve(){
Integer sum = 0; //Holds the sum of all the correct elements
int sum = 0; //Holds the sum of all the correct elements
//Check every number < 1000 to see if it is a multiple of 3 or 5. If it is add it to the running sum
timer.start();
for(int cnt = 1;cnt <= TOP_NUM;++cnt){
@@ -44,11 +44,11 @@ public class Problem1 extends Problem{
}
timer.stop();
//Save the results
result = "The sum of all numbers < " + TOP_NUM.toString() + 1 + " is " + sum.toString();
result = "The sum of all numbers < " + (TOP_NUM + 1) + " is " + sum;
}
}
/* Results:
The sum of all numbers < 1000 is 233168
It took 140.000 microseconds to solve this problem.
It took 22.000 microseconds to solve this problem.
*/

View File

@@ -1,11 +1,11 @@
//ProjectEuler/Java/Problem2.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 03-28-19
//Modified: 06-15-20
//The sum of the even Fibonacci numbers less than 4,000,000
//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
it under the terms of the GNU Lesser General Public License as published by
@@ -39,9 +39,9 @@ public class Problem2 extends Problem{
timer.start();
//Get a list of all fibonacci numbers < 4,000,000
ArrayList<Integer> fibNums = Algorithms.getAllFib(TOP_NUM);
Integer sum = 0;
int sum = 0;
//Step through every element in the list checking if it is even
for(Integer num : fibNums){
for(int num : fibNums){
//If the number is even add it to the running tally
if((num % 2) == 0){
sum += num;
@@ -57,5 +57,5 @@ public class Problem2 extends Problem{
/* Results:
The sum of all even fibonacci numbers <= 3999999 is 4613732
It took 551.500 microseconds to solve this problem.
It took 36.299 microseconds to solve this problem.
*/

View File

@@ -1,11 +1,11 @@
//ProjectEuler/Java/Problem3.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 03-28-19
//Modified: 06-15-20
//The largest prime factor of 600851475143
//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
it under the terms of the GNU Lesser General Public License as published by
@@ -54,5 +54,5 @@ public class Problem3 extends Problem{
/* Results:
The largest factor of the number 600851475143 is 6857
It took 337.600 milliseconds to solve this problem.
It took 242.138 milliseconds to solve this problem.
*/

View File

@@ -1,11 +1,11 @@
//ProjectEuler/Java/Problem4.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 03-28-19
//Modified: 06-15-20
//Find the largest palindrome made from the product of two 3-digit numbers
//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
it under the terms of the GNU Lesser General Public License as published by
@@ -29,9 +29,9 @@ import java.util.Collections;
public class Problem4 extends Problem{
//The first number to be multiplied
private static final Integer START_NUM = 100;
private static final int START_NUM = 100;
//The last number to be multiplied
private static final Integer END_NUM = 999;
private static final int END_NUM = 999;
public Problem4(){
super("Find the largest palindrome made from the product of two 3-digit numbers");
@@ -43,13 +43,13 @@ public class Problem4 extends Problem{
ArrayList<Integer> palindromes = new ArrayList<Integer>();
//Start at the first 3-digit number and check every one up to the last 3-digit number
for(Integer firstNum = START_NUM;firstNum <= END_NUM;++firstNum){
for(int firstNum = START_NUM;firstNum <= END_NUM;++firstNum){
//You can start at the location of the first number because everything before that has already been tested. (100 * 101 == 101 * 100)
for(Integer secondNum = firstNum;secondNum < END_NUM;++secondNum){
for(int secondNum = firstNum;secondNum < END_NUM;++secondNum){
//Get the product
Integer product = firstNum * secondNum;
int product = firstNum * secondNum;
//Change the number into a string
String productString = product.toString();
String productString = Integer.toString(product);
//Reverse the string
String reverseString = new StringBuilder(productString).reverse().toString();
@@ -74,5 +74,5 @@ public class Problem4 extends Problem{
/* Results:
The largest palindrome is 906609
It took 47.490 milliseconds to solve this problem.
It took 14.919 milliseconds to solve this problem.
*/

View File

@@ -1,11 +1,11 @@
//ProjectEuler/Java/Problem5.java
//Matthew Ellison
// Created: 03-01-19
//Modified: 03-28-19
//Modified: 06-15-20
//What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
//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
it under the terms of the GNU Lesser General Public License as published by
@@ -32,13 +32,13 @@ public class Problem5 extends Problem{
timer.start();
//Start at 20 because it must at least be divisible by 20. Increment by 2 because it must be an even number to be divisible by 2
Boolean numFound = false;
Integer currentNum = 20;
boolean numFound = false;
int currentNum = 20;
while((currentNum > 0) && (!numFound)){
//Start by assuming you found the number (because we throw a flag if we didn't find it)
numFound = true;
//Step through every number from 1-20 seeing if the current number is divisible by it
for(Integer divisor = 1;divisor <= 20;++divisor){
for(int divisor = 1;divisor <= 20;++divisor){
//If it is not divisible then throw a flag and start looking at the next number
if((currentNum % divisor) != 0){
numFound = false;
@@ -55,11 +55,11 @@ public class Problem5 extends Problem{
timer.stop();
//Save the results
result = String.format("The smallest positive number evenly divisibly by all number 1-20 is " + currentNum.toString());
result = String.format("The smallest positive number evenly divisibly by all number 1-20 is " + currentNum);
}
}
/* Results:
The smallest positive number evenly divisibly by all number 1-20 is 232792560
It took 393.616 milliseconds to solve this problem.
It took 156.873 milliseconds to solve this problem.
*/