diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-06-04 03:13:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-04 03:13:53 +0100 |
| commit | 97e06c11aaf7463f2e3fe85b341adfb4efa4f11f (patch) | |
| tree | 42b308b6a7c81b56f6b9268507db5dcb408758df /challenge-167/michael-dicicco/java | |
| parent | 7bcf2d3292c4a1bfc064ddbb7c6806248e243ef4 (diff) | |
| parent | 155586bc6de8a84b67ef1136d252265891d07bae (diff) | |
| download | perlweeklychallenge-club-97e06c11aaf7463f2e3fe85b341adfb4efa4f11f.tar.gz perlweeklychallenge-club-97e06c11aaf7463f2e3fe85b341adfb4efa4f11f.tar.bz2 perlweeklychallenge-club-97e06c11aaf7463f2e3fe85b341adfb4efa4f11f.zip | |
Merge pull request #6196 from mikedici/challenge-167
challenge-167 entry
Diffstat (limited to 'challenge-167/michael-dicicco/java')
| -rw-r--r-- | challenge-167/michael-dicicco/java/challenge167/circularprime.java | 46 | ||||
| -rw-r--r-- | challenge-167/michael-dicicco/java/challenge167/task1.java | 43 |
2 files changed, 89 insertions, 0 deletions
diff --git a/challenge-167/michael-dicicco/java/challenge167/circularprime.java b/challenge-167/michael-dicicco/java/challenge167/circularprime.java new file mode 100644 index 0000000000..a7038ffba1 --- /dev/null +++ b/challenge-167/michael-dicicco/java/challenge167/circularprime.java @@ -0,0 +1,46 @@ +package challenge167; + +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * + * @author mddicicco + */ +public class circularprime { + public static Set<String> used_numbers = new LinkedHashSet<>(); + public static boolean isPrime(int someNumber){ + if (someNumber <= 1){ + return false; + } + for(int i = 2; i < (someNumber - 1); i++){ + if (someNumber % i == 0){ + return false; + } + } + return true; + } + + public static String rotate(String someNumber){ + // rotate to the left one character + return someNumber.substring(1,someNumber.length()) + someNumber.substring(0,1); + } + + public static boolean validate(String someNumber){ + // check if the original string is prime + if (!isPrime(Integer.parseInt(someNumber))){ + return false; + } + + String temp = someNumber; + // check if any rotations of the string are not prime + for(int i = 0; i < someNumber.length() - 1; i++){ + temp = rotate(temp); + if (!isPrime(Integer.parseInt(temp))){ + return false; + } + used_numbers.add(temp); + } + return true; + } +} diff --git a/challenge-167/michael-dicicco/java/challenge167/task1.java b/challenge-167/michael-dicicco/java/challenge167/task1.java new file mode 100644 index 0000000000..695304347a --- /dev/null +++ b/challenge-167/michael-dicicco/java/challenge167/task1.java @@ -0,0 +1,43 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template + */ +package challenge167; + +/** + * + * @author mddicicco + */ +public class task1 { + + /** + * Challenge 167 Task1 + * + * Solution By: Michael DiCicco + * + * Write a script to find out first 10 circular primes having at least 3 + * digits (base 10). Please checkout wikipedia for more information. A + * circular prime is a prime number with the property that the number + * generated at each intermediate step when cyclically permuting its (base + * 10) digits will also be prime. + * + * Output 113, 197, 199, 337, 1193, 3779, 11939, 19937, 193939, 199933 + */ + + public static void main(String[] args) { + String[] ten_circular_primes = new String[10]; + String someNumber = "111"; + int index = 0; + while (ten_circular_primes[9] == null) { + if (circularprime.validate(someNumber)) { + if (!circularprime.used_numbers.contains(someNumber)) { + ten_circular_primes[index] = someNumber; + index++; + } + } + someNumber = Integer.toString(Integer.parseInt(someNumber) + 1); + } + System.out.println(String.join(", ", ten_circular_primes)); + + } +} |
