Wyszukiwanie liczb super pierwszych

Wyszukiwanie liczb super pierwszych

Program: wyszukujący ilość liczb super pierwszych z przedziału podanego przez użytkownika.

Liczba super pierwsza jest to taka która spełnia dwa następujące warunki:

  • jest liczbą pierwszą,
  • suma cyfr tej liczby jest również liczbą pierwszą.

Użytkownik wyznacza początek i koniec przedziału z którego są wyszukiwane liczby.

Kompilator: Eclipse

Galeria:

Program w akcji.

Kod programu:

import javax.swing.JOptionPane;
public class glowna {
		//Program wyliczający ilość liczb super pierwszych.
        public static boolean pierwsza(int n){
           if((n%2==0)&&(n!=2)) return false;
                for(int i=3;i<=Math.sqrt(n);i+=2){
                        if(n%i==0) return false;
                }
                return true;
        }
        public static int SumaCyfr(int n){
                int suma=0;      
                String sc=String.valueOf(n);
                for(int i=0;i<sc.length();i++){
                		suma+=(sc.charAt(i)-48);     }
                return suma;   
        }
        public static void main(String[] args) {
                int p=Integer.parseInt(JOptionPane.showInputDialog("Podaj p"));
                int k=Integer.parseInt(JOptionPane.showInputDialog("Podaj k"));
                int ile=0;
                for(int i=p;i<=k;i++){
                        if(pierwsza(i)){
                                if(pierwsza(SumaCyfr(i))){
                                        ile++;
                                }
                        }
                }
                System.out.print("Jest "+ile+" liczb "+"" +
                		"super pierwszych");
        }
}

Słowniczek pojęć:

To takie liczby pierwsze, których pozycja na liście liczb pierwszych też jest liczbą pierwszą. Do optymalnego rozwiązania warto wykorzystać sito Eratostenesa. Przykładowo najmniejszą liczbą Super Pierwszą jest 3, ponieważ 3 jest drugą liczbą pierwszą, a 2 też jest liczbą pierwszą.