Data update
This commit is contained in:
parent
07c7092a52
commit
61b93a2cd1
313 changed files with 6160 additions and 346 deletions
|
|
@ -0,0 +1,31 @@
|
|||
100 PROGRAM PrimeDecomposition
|
||||
110 REM -(2^31) has most prime factors (31 twos) than other 32-bit signed integer.
|
||||
120 DIM Facs(0 TO 30)
|
||||
130 INPUT PROMPT "Enter a number: ": N
|
||||
140 CALL CalcFacs(N, Facs, FacsCnt)
|
||||
150 REM There is at least one factor
|
||||
160 FOR I = 0 TO FacsCnt - 1
|
||||
170 PRINT Facs(I);
|
||||
180 NEXT I
|
||||
190 PRINT
|
||||
200 END
|
||||
210 REM **
|
||||
220 EXTERNAL SUB CalcFacs(N, Facs(), FacsCnt)
|
||||
230 LET N = ABS(N)
|
||||
240 LET FacsCnt = 0
|
||||
250 IF N >= 2 THEN
|
||||
260 LET I = 2
|
||||
270 DO WHILE I * I <= N
|
||||
280 IF MOD(N, I) = 0 THEN
|
||||
290 LET N = INT(N / I)
|
||||
300 LET Facs(FacsCnt) = I
|
||||
310 LET FacsCnt = FacsCnt + 1
|
||||
320 LET I = 2
|
||||
330 ELSE
|
||||
340 LET I = I + 1
|
||||
350 END IF
|
||||
360 LOOP
|
||||
370 LET Facs(FacsCnt) = N
|
||||
380 LET FacsCnt = FacsCnt + 1
|
||||
390 END IF
|
||||
400 END SUB
|
||||
55
Task/Prime-decomposition/Modula-2/prime-decomposition.mod2
Normal file
55
Task/Prime-decomposition/Modula-2/prime-decomposition.mod2
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
MODULE PrimeDecomposition;
|
||||
|
||||
FROM STextIO IMPORT
|
||||
SkipLine, WriteLn, WriteString;
|
||||
FROM SWholeIO IMPORT
|
||||
ReadCard, WriteInt;
|
||||
|
||||
CONST
|
||||
MaxFacIndex = 31;
|
||||
(* 2^31 has most prime factors (31 twos) than other 32-bit unsigned integer. *)
|
||||
|
||||
TYPE
|
||||
TFacs = ARRAY [0 .. MaxFacIndex] OF CARDINAL;
|
||||
|
||||
VAR
|
||||
Facs: TFacs;
|
||||
I, N, FacsCnt: CARDINAL;
|
||||
|
||||
PROCEDURE CalcFacs(N: CARDINAL; VAR Facs: TFacs; VAR FacsCnt: CARDINAL);
|
||||
VAR
|
||||
I: CARDINAL;
|
||||
BEGIN
|
||||
FacsCnt := 0;
|
||||
IF N >= 2 THEN
|
||||
I := 2;
|
||||
WHILE I * I <= N DO
|
||||
IF N MOD I = 0 THEN
|
||||
N := N DIV I;
|
||||
Facs[FacsCnt] := I;
|
||||
FacsCnt := FacsCnt + 1;
|
||||
I := 2
|
||||
ELSE
|
||||
I := I + 1
|
||||
END
|
||||
END;
|
||||
Facs[FacsCnt] := N;
|
||||
FacsCnt := FacsCnt + 1
|
||||
END;
|
||||
END CalcFacs;
|
||||
|
||||
BEGIN
|
||||
WriteString("Enter a number: ");
|
||||
ReadCard(N);
|
||||
SkipLine;
|
||||
CalcFacs(N, Facs, FacsCnt);
|
||||
(* There is at least one factor *)
|
||||
IF FacsCnt > 1 THEN
|
||||
FOR I := 0 TO FacsCnt - 2 DO
|
||||
WriteInt(Facs[I], 1);
|
||||
WriteString(" ")
|
||||
END;
|
||||
END;
|
||||
WriteInt(Facs[FacsCnt - 1], 1);
|
||||
WriteLn
|
||||
END PrimeDecomposition.
|
||||
Loading…
Add table
Add a link
Reference in a new issue