aboutsummaryrefslogtreecommitdiff
path: root/challenge-167/michael-dicicco/java
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-04 03:13:53 +0100
committerGitHub <noreply@github.com>2022-06-04 03:13:53 +0100
commit97e06c11aaf7463f2e3fe85b341adfb4efa4f11f (patch)
tree42b308b6a7c81b56f6b9268507db5dcb408758df /challenge-167/michael-dicicco/java
parent7bcf2d3292c4a1bfc064ddbb7c6806248e243ef4 (diff)
parent155586bc6de8a84b67ef1136d252265891d07bae (diff)
downloadperlweeklychallenge-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.java46
-rw-r--r--challenge-167/michael-dicicco/java/challenge167/task1.java43
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));
+
+ }
+}