aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--challenge-167/michael-dicicco/java/challenge167/circularprime.java46
-rw-r--r--challenge-167/michael-dicicco/java/challenge167/task1.java43
-rw-r--r--challenge-167/michael-dicicco/python/task1.py54
3 files changed, 143 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));
+
+ }
+}
diff --git a/challenge-167/michael-dicicco/python/task1.py b/challenge-167/michael-dicicco/python/task1.py
new file mode 100644
index 0000000000..9102a14279
--- /dev/null
+++ b/challenge-167/michael-dicicco/python/task1.py
@@ -0,0 +1,54 @@
+# 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
+
+class CircularPrime:
+ used_numbers = set()
+
+ @staticmethod
+ def is_prime(some_number):
+ if int(some_number) <= 1:
+ return False
+ for i in range(2, int(some_number) - 1):
+ if int(some_number) % i == 0:
+ return False
+ return True
+
+ @staticmethod
+ def rotate(some_number):
+ return some_number[1: len(some_number)] + some_number[0]
+
+ @staticmethod
+ def validate(some_number):
+ if not CircularPrime.is_prime(some_number):
+ return False
+ tmp = some_number
+ for i in range(0, len(some_number) - 1):
+ tmp = CircularPrime.rotate(tmp)
+ if not CircularPrime.is_prime(int(tmp)):
+ return False
+ CircularPrime.used_numbers.add(tmp)
+ return True
+
+
+def main():
+ ten_circular_primes = []
+ some_number = "111"
+ while len(ten_circular_primes) < 10:
+ if CircularPrime.validate(some_number):
+ if some_number not in CircularPrime.used_numbers:
+ ten_circular_primes.append(some_number)
+ some_number = str(int(some_number) + 1)
+ print(", ".join(ten_circular_primes))
+
+
+if __name__ == '__main__':
+ main()