Skip to content

Commit

Permalink
Solve p5 in C#, Java
Browse files Browse the repository at this point in the history
  • Loading branch information
LivInTheLookingGlass committed Sep 16, 2024
1 parent 8a4f8c8 commit 45b1c54
Show file tree
Hide file tree
Showing 13 changed files with 119 additions and 10 deletions.
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@ Olivia's Project Euler Solutions
| | C++14+ in: |msvc| [1]_ | | |CodeQL| |br| |
| | |br| Browser [3]_ | | |Cp-lint| |
+------------+----------------------------+--------+-------------------+
| C |nbsp| # | .NET 2+ | 21 | |C#i| |br| |
| C |nbsp| # | .NET 2+ | 22 | |C#i| |br| |
| | | | |Cs-Cov| |br| |
| | | | |CodeQL| |br| |
| | | | |C#-lint| |
+------------+----------------------------+--------+-------------------+
| Java | Java 8+ in Corretto, |br| | 21 | |Javai| |br| |
| Java | Java 8+ in Corretto, |br| | 22 | |Javai| |br| |
| | Dragonwell, Liberica, |br| | | |Ja-Cov| |br| |
| | Microsoft, Oracle, |br| | | |CodeQL| |br| |
| | Semeru, Temurin, & Zulu | | |Java-lint| |
Expand Down
1 change: 1 addition & 0 deletions csharp/Euler.Test/test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public static IEnumerable<object[]> Data()
yield return new object[] { typeof(p0002), false, Utilities.GetAnswer(2) };
yield return new object[] { typeof(p0003), false, Utilities.GetAnswer(3) };
yield return new object[] { typeof(p0004), false, Utilities.GetAnswer(4) };
yield return new object[] { typeof(p0005), false, Utilities.GetAnswer(5) };
yield return new object[] { typeof(p0006), false, Utilities.GetAnswer(6) };
yield return new object[] { typeof(p0007), false, Utilities.GetAnswer(7) };
yield return new object[] { typeof(p0008), false, Utilities.GetAnswer(8) };
Expand Down
2 changes: 1 addition & 1 deletion csharp/Euler/p0003.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class p0003 : IEuler
{
public object Answer()
{
return (short)Enumerable.Max(Prime.PrimeFactors(600851475143));
return (short)Prime.PrimeFactors(600851475143).Max();
}
}
}
34 changes: 34 additions & 0 deletions csharp/Euler/p0005.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
Project Euler Problem 5
Problem:
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
*/
using System;

namespace Euler
{
public class p0005 : IEuler
{
public object Answer()
{
int answer = 1;
byte[] factorTracker = new byte[20], localFactorTracker = new byte[20];
for (byte i = 2; i < 21; i++) {
foreach (byte p in Prime.PrimeFactors(i))
localFactorTracker[p]++;
for (byte j = 2; j < 20; j++) {
factorTracker[j] = Math.Max(factorTracker[j], localFactorTracker[j]);
localFactorTracker[j] = 0;
}
}
for (byte i = 2; i < 20; i++)
for (byte j = 0; j < factorTracker[i]; j++)
answer *= i;
return answer;
}
}
}
6 changes: 1 addition & 5 deletions csharp/Euler/p0007.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@ public class p0007 : IEuler
{
public object Answer()
{
int i = 0;
foreach (long p in Prime.Primes<long>())
if (i++ == 10000)
return (int)p;
return -1;
return Prime.Primes<int>().ElementAt(10000);
}
}
}
2 changes: 1 addition & 1 deletion csharp/Euler/p0010.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class p0010 : IEuler
{
public object Answer()
{
return Enumerable.Sum(Prime.Primes<long>(2000000));
return Prime.Primes<long>(2000000).Sum();
}
}
}
1 change: 1 addition & 0 deletions csharp/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ Problems Solved
- ☒ `2 <./Euler/p0002.cs>`__
- ☒ `3 <./Euler/p0003.cs>`__
- ☒ `4 <./Euler/p0004.cs>`__
- ☒ `5 <./Euler/p0005.cs>`__
- ☒ `6 <./Euler/p0006.cs>`__
- ☒ `7 <./Euler/p0007.cs>`__
- ☒ `8 <./Euler/p0008.cs>`__
Expand Down
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Problems Solved
+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+
|:prob:`004`|:c-d:`0004`|:cp-d:`0004`|:cs-d:`0004`|:ja-d:`0004`|:js-d:`0004`|:lu-d:`0004`|:py-d:`0004`|:rs-d:`0004`|
+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+
|:prob:`005`|:c-d:`0005`|:cp-d:`0005`| | |:js-d:`0005`| |:py-d:`0005`|:rs-d:`0005`|
|:prob:`005`|:c-d:`0005`|:cp-d:`0005`|:cs-d:`0005`|:ja-d:`0005`|:js-d:`0005`| |:py-d:`0005`|:rs-d:`0005`|
+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+
|:prob:`006`|:c-d:`0006`|:cp-d:`0006`|:cs-d:`0006`|:ja-d:`0006`|:js-d:`0006`|:lu-d:`0006`|:py-d:`0006`|:rs-d:`0006`|
+-----------+-----------+------------+------------+------------+------------+------------+------------+------------+
Expand Down
18 changes: 18 additions & 0 deletions docs/src/csharp/p0005.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
C# Implementation of Problem 5
==============================

View source code :source:`csharp/Euler/p0005.cs`

.. csharp:namespace:: Euler
.. csharp:class:: p0005
.. csharp:inherits:: Euler.IEuler
.. csharp:method:: object Answer()
.. literalinclude:: ../../../csharp/Euler/p0005.cs
:language: csharp
:linenos:

.. tags:: csharp-iterator, divisibility, factorization, prime-number
24 changes: 24 additions & 0 deletions docs/src/java/p0005.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Java Implementation of Problem 5
================================

View source code :source:`java/src/main/java/euler/p0005.java`

Includes
--------

- `Primes.java <./lib/primes.html>`_

Problem Solution
----------------

.. java:type:: public class p0005 implements IEuler
.. java:method:: Object answer()
:return: The answer to Project Euler problem 5

.. literalinclude:: ../../../java/src/main/java/euler/p0005.java
:language: java
:linenos:

.. tags:: java-iterator, divisibility, factorization, prime-number
1 change: 1 addition & 0 deletions java/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ Problems Solved
- ☒ `2 <./src/main/java/p0002.java>`__
- ☒ `3 <./src/main/java/p0003.java>`__
- ☒ `4 <./src/main/java/p0004.java>`__
- ☒ `5 <./src/main/java/p0005.java>`__
- ☒ `6 <./src/main/java/p0006.java>`__
- ☒ `7 <./src/main/java/p0007.java>`__
- ☒ `8 <./src/main/java/p0008.java>`__
Expand Down
33 changes: 33 additions & 0 deletions java/src/main/java/euler/p0005.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
Project Euler Problem 5
Problem:
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
*/
package euler;

import euler.lib.Primes;

public class p0005 implements IEuler {
@Override
public Object answer() {
int answer = 1;
int[] factorTracker = new int[20], localFactorTracker = new int[20];
for (int i = 2; i < 21; i++) {
Primes.primeFactors(i)
.mapToInt(Long::intValue)
.forEach(p -> localFactorTracker[p]++);
for (int j = 2; j < 20; j++) {
factorTracker[j] = Math.max(factorTracker[j], localFactorTracker[j]);
localFactorTracker[j] = 0;
}
}
for (int i = 2; i < 20; i++)
for (int j = 0; j < factorTracker[i]; j++)
answer *= i;
return answer;
}
}
1 change: 1 addition & 0 deletions java/src/test/java/EulerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ static Stream<Object[]> data() throws IOException {
new Object[] { p0002.class, false, Utilities.getAnswer(2) },
new Object[] { p0003.class, false, Utilities.getAnswer(3) },
new Object[] { p0004.class, false, Utilities.getAnswer(4) },
new Object[] { p0005.class, false, Utilities.getAnswer(5) },
new Object[] { p0006.class, false, Utilities.getAnswer(6) },
new Object[] { p0007.class, false, Utilities.getAnswer(7) },
new Object[] { p0008.class, false, Utilities.getAnswer(8) },
Expand Down

0 comments on commit 45b1c54

Please # to comment.