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()));
}
}
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;
}
}
