Java :: Aufgabe #164
2 Lösungen
Symmetrische Primzahlen
Anfänger - Java
von hollst
- 03.04.2017 um 13:55 Uhr
Wieviele Primzahlen P < 1.000.000 sind rückwärts gelesen auch eine Primzahl, jedoch ungleich sich selbst?
Anmerkung: Die (Prim)zahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingungen (sind rückwärts gelesen sich selbst gleich),
als erste erfüllt die 13 die Bedingungen.
Anmerkung: Die (Prim)zahlen 2, 3, 5, 7, 11 erfüllen nicht die Bedingungen (sind rückwärts gelesen sich selbst gleich),
als erste erfüllt die 13 die Bedingungen.
Lösungen:
Korrigierte Version. Ich hab zuerst "jedoch ungleich sich selbst" überlesen...
Java-Code
import java.util.*; class primzahlen { public static ArrayList<Integer> primzahlenBerechnen() { int maxInt = 1000000; ArrayList<Integer> zahlen = new ArrayList<Integer>(); //ArrayList füllen for(int i = 13; i <= maxInt; i++) { zahlen.add(i); } //Algorithmus: Sieb des Eratosthenes for(int i = 0; i < zahlen.size(); i++) { if(zahlen.get(i) % 2 == 0 && zahlen.get(i) != 2) { zahlen.remove(i); } } for(int i = 0; i < zahlen.size(); i++) { if(zahlen.get(i) % 3 == 0 && zahlen.get(i) != 3) { zahlen.remove(i); } } for(int i = 0; i < zahlen.size(); i++) { if(zahlen.get(i) % 5 == 0 && zahlen.get(i) != 5) { zahlen.remove(i); } } for(int i = 0; i < zahlen.size(); i++) { if(zahlen.get(i) % 7 == 0 && zahlen.get(i) != 7) { zahlen.remove(i); } } return zahlen; } public static int umkehren(int n) { int result = 0; int rem; while (n > 0) { rem = n % 10; n = n / 10; result = result * 10 + rem; } return result; } public static int zahlenPruefen(ArrayList<Integer> zahlen) { int zaehler = 0; for(int i = 0; i < zahlen.size(); i++) { if(zahlen.contains(umkehren(zahlen.get(i))) && zahlen.get(i) != umkehren(zahlen.get(i))) { zaehler++; //Optional: Anzeige aller gültigen Zahlenpaare. //System.out.println(zahlen.get(i) + " ist umgekehrt (" + umkehren(zahlen.get(i)) + ") auch eine Primzahl."); } } return zaehler; } public static void main (String[] args) throws java.lang.Exception { System.out.print("Anzahl aller Primzahlen: " + zahlenPruefen(primzahlenBerechnen())); } }
Java-Code
class Primzahlen { public static void main(String[] args) { int zaehler = 0; for(int i = 12; i<1000000; i++) { boolean prim1 = true; for(int j = 2; j <= Math.sqrt(i); j++ ) { if(i%j == 0) { prim1 = false; break; } } if(prim1) { boolean prim2 = true; for(int j = 2; j <= Math.sqrt(drehen(i)); j++ ) { if(drehen(i)%j == 0) { prim2 = false; break; } } if(prim2 && i != drehen(i)) { zaehler++; } } } System.out.print(zaehler); } public static int drehen(int i) { int zahl = i; int umdrehen = 0; while(zahl>0) { umdrehen = umdrehen*10 + zahl%10; zahl /= 10; } return umdrehen; } }