Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.75 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class Primzahlen
  3. {
  4.     private Scanner sc = new Scanner(System.in);
  5.     private int[] zahlen;
  6.     private int[] prim;
  7.     public Primzahlen ()
  8.     {
  9.         primzahlenherausfinden();
  10.     }
  11.     private void fuellen(){
  12.         for (int i=0;i<zahlen.length;i++){
  13.             zahlen[i] = i+2;
  14.         }
  15.     }
  16.     private void delvielfache(){
  17.         for (int i=0;i<zahlen.length;i++){
  18.             if (zahlen[i]!=0){
  19.                 int maxvf=(zahlen.length+1)/(i+2);
  20.                 if ( maxvf<2) {
  21.                     System.out.println("Es gibt keine Vielfachen von "+(i+2)+".");
  22.                 } else {
  23.                     System.out.print("Die Vielfachen von "+(i+2)+" werden aussortiert: ");
  24.                     for (int j=2;j<=maxvf;j++){
  25.                         zahlen[((i+2)*j)-2]=0;
  26.                         System.out.print(((i+2)*j)+", ");
  27.                     }
  28.                     System.out.println();
  29.                 }
  30.             } else {
  31.                 System.out.println(""+(i+2)+" wurde bereits aussortiert.");
  32.            }
  33.            try {
  34.                 Thread.sleep(350);
  35.             } catch (InterruptedException e) {}
  36.         }    
  37.     }
  38.     private void findprim(){
  39.         int primlaenge = 0;
  40.         for(int i=0;i<zahlen.length;i++){
  41.             if (zahlen[i]!=0){
  42.                 primlaenge++;
  43.                 if (primlaenge==1){
  44.                     System.out.println(""+(i+2)+" ist eine Primzahl, damit ist es "+primlaenge+" Primzahl.");
  45.                 } else {
  46.                     System.out.println(""+(i+2)+" ist eine Primzahl, damit sind es "+primlaenge+" Primzahlen.");
  47.                 }
  48.             } else {
  49.                 System.out.println(""+(i+2)+" ist keine Primzahl.");
  50.             }
  51.             try {
  52.                 Thread.sleep(350);
  53.             } catch (InterruptedException e) {}
  54.         }
  55.         prim = new int[primlaenge];
  56.     }
  57.     private void saveprim(){
  58.         int saveindex=0;
  59.         for(int i=0;i<zahlen.length;i++){
  60.             if (zahlen[i]!=0){
  61.                 prim[saveindex]=zahlen[i];
  62.                 saveindex++;
  63.             }
  64.         }
  65.     }
  66.     private void printprim(){
  67.         System.out.println("Die Primzahlen zwischen 1 und einschließlich "+(zahlen.length+1)+" lauten: ");
  68.         for (int i=0; i<prim.length; i++) {
  69.             System.out.print(""+prim[i]+", ");
  70.         }
  71.         System.out.println();
  72.         System.out.println("Es sind also "+prim.length+" Primzahlen.");
  73.        
  74.     }
  75.     public void primzahlenherausfinden(){
  76.         System.out.print("\fBitte gib das obere Ende des nach Primzahlen zu durchsuchenden Bereichs an: ");
  77.         int zahl=0;
  78.         while (zahl <2) {
  79.             for (int h=0;h==0;h++) {
  80.                 //Versuch, die Eingabe in Form eines Strings zu einer double zu konvertieren
  81.                 try {
  82.                     zahl = Integer.parseInt(sc.nextLine());
  83.                 } catch (java.lang.NumberFormatException e) {
  84.                     //Gibt den Fehler aus und lässt die Schleife wiederholen
  85.                     System.out.println("Eingabe eines gültigen Zahlenwertes erforderlich");
  86.                     h--;
  87.                 }
  88.             }
  89.         }
  90.         zahlen = new int[zahl-1];
  91.         System.out.println("Es werden nun alle Primzahlen zwischen 1 und einschließlich "+zahl+" gesucht.");
  92.         System.out.println();
  93.         fuellen();
  94.         System.out.println("Einzelne Zahlen ausgeben: ");
  95.         if(sc.nextLine()=="Y"){
  96.             delvielfache();
  97.         }
  98.         System.out.println();
  99.         findprim();
  100.         saveprim();
  101.         System.out.println();
  102.         printprim();
  103.     }
  104.     public static void main(String[] args) {
  105.         new Primzahlen();
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement