Java :: Aufgabe #164

2 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von Bufkin (1410 Punkte) - 23.08.2017 um 16:12 Uhr
Korrigierte Version. Ich hab zuerst "jedoch ungleich sich selbst" überlesen...

Quellcode ausblenden 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()));
    }
}
vote_ok
von derHG (480 Punkte) - 14.12.2017 um 17:26 Uhr
Quellcode ausblenden 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;
 	}
}
1801010

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.