Re: [闲聊] 刷子

楼主: osmon54a7 (彰)   2023-10-29 01:56:55
很好奇PTT对于CODE的P币算法
所以献个丑
IDENTIFICATION DIVISION.
PROGRAM-ID. PRACTICE13.
AUTHOR OSMON.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NUM.
05WS-NUM1 PIC 9(2).
05WS-NUM2 PIC 9(2).
05WS-I PIC 9(3).
05WS-J PIC 9(3).
05WS-K PIC 9(4).
05WS-L PIC 9(4).
05WS-D PIC 9(4).
05WS-E PIC 9(2).
05WS-F PIC 9(2).
05WS-G PIC 9(2).
05WS-H PIC 9(2).
PROCEDURE DIVISION,
DISPLAY"请输入第一个数"
ACCEPT WS-NUM1.
DISPLAY"请输入第二个数"
ACCEPT WS-NUM2.
MOVE WS-NUM1 TO WS-E.
MOVE WS-NUM2 TO WS-F.
PERFORM 300-DIVIDE.
DISPLAY "END"
STOP RUN.
*辗转相除法为A>B则A/B之余数C用来B/C求余数D循环至余数为0为最大公因子
300-DIVIDE.
IF E NOT = F
PERFORM 400-DIVIDE
ELSE
DISPLAY WS-NUM1 "及 "WS-NUM2 " 之最大公因子为 "WS-NUM1
END-IF.
400-DIVIDE.
IF E>F THEN
DIVIDE WS-F INTO WS-E GIVING WS-D REMAINDER WS-G
PERFORM 401-DIVIDE1
ELSE
DIVIDE WS-E INTO WS-F GIVING WS-H REMAINDER WS-L
PERFORM 402-DIVIDE1
END-IF.
401-DIVIDE1.
IF WS-G NOT = 0
MOVE WS-G TO WS-E
GO TO 300-DIVIDE
ELSE
DISPLAY WS-NUM1 " 及 " WS-NUM2 " 之最大公因子为 " WS-F
DISPLAY "END"
GOBAACK.
END-IF.
402-DIVIDE1.
IF WS-L NOT = 0
MOVE WS-L TO WS-F
GO TO 300-DIVIDE
ELSE
DISPLAY WS-NUM1" 及 " WS-NUM2 " 之最大为 " WS-E
GOBACK
END-IF.
作者: KazamaSuisei (星风最强)   2023-10-29 02:03:00
这一篇文章值 221 Ptt币

Links booklink

Contact Us: admin [ a t ] ucptt.com