blikk info infothek forum galerie sitemap

Lösung zu Bildung von Primfaktoren

anfang zurueck weiter ende nach oben
Struktogramm:

Programmcode:

(* Schule : Gewerbeoberschule "Max Valier" Bozen
  
Klasse : 3Ia
  
Author : P.S./E.P.(Gruppe 4) 
  
Lizenz : GPL                                    *)


PROGRAM primfktz;
USES Crt;
CONST
 
max = 100;                  (* Tabellenmaximum   *)

TYPE 
  t_primf = RECORD
    fakt : LONGINT;                  (* Primfaktor *)
    expo : LONGINT;                    (* Exponent *)
  END;
(* Verbundarray                                    *)
 
t_primtab = ARRAY[1..max] OF t_primf;

(* Prozedur zum Errechnen der Primzahlfaktoren, mit
gleichzeitigem Errechnen des Exponenten            *)
PROCEDURE Primfakt(      zahl : LONGINT;
                    VAR zprim : t_primtab;
                    VAR i     : LONGINT );
VAR
pzahl : LONGINT;         (* die zu zerlegende Zahl *)
prim : LONGINT;                        (* Primzahl *)
fakt : LONGINT;                      (* Primfaktor *)
expo : LONGINT;                        (* Exponent *)

BEGIN
  pzahl :=zahl;
  prim :=2;
  (* 2 ist die erste Primzahl                      *)
  expo :=0;
  (* Am Anfang ist der Exponent 0                  *)
  i :=0;
  (* Wenn Zahl 1 = Abbruch                         *)
  WHILE pzahl > 1 DO BEGIN
  (* Division durch die Primzahl ohne Rest         *)
   
IF (pzahl MOD prim) = 0 THEN BEGIN
     
WHILE (pzahl MOD prim) = 0 DO BEGIN
       
pzahl := pzahl DIV prim;
       
expo := expo + 1;
     
END
   
END
   
ELSE BEGIN
     
expo := 0;
     
prim := prim + 1;
    
END;
   
IF expo <> 0 THEN BEGIN
     
i := i + 1;
     
zprim[i].expo := expo;
     
zprim[i].fakt := prim
   
END
 
END
END;

(*=================Hauptprogramm===================*)
VAR
 
zahl, i, k, j : LONGINT;
 
fakt          : t_primtab;
 
anz           : LONGINT;

BEGIN
Clrscr;
 
Write('Geben sie eine Zahl ein, die Sie in ');
  Writeln('Faktoren zerlegen moechten: ');
 
Readln(zahl);
 
Write('Wenn man die Primzahl ',zahl,' zerlegt '); 
  Write('erhaelt man die
Primfaktoren zu der ');
  Writeln('Potenz: ');
 
Primfakt(zahl,fakt,anz);
 
Write('Faktor: ');
 
FOR i := 1 TO anz DO BEGIN
   
IF fakt[i].expo <> 0 THEN
     
Write(fakt[i].fakt:6);
 
END;
 
Writeln;
 
Write('Exponent: ');
 
FOR i:=1 TO anz DO
   
IF fakt[i].expo <> 0 THEN BEGIN
      
j := j + 1;
     
Write(fakt[i].expo:6)
   
END;
  
Writeln;
 
Write('Index: ');
 
FOR k:=1 TO j DO
   
Write(k:6);
  
Readln;
END.

Andere Anwendungen zu ARRAYS



Author P.S./E.P. (Gruppe 4)

 

nach oben
punkt   seitenbereich schließen

Die Theorie


Verbundtyp

Verbundarray