jas 发布于十一月 19, 2021 分享 发布于十一月 19, 2021 (已修改) IF条件只有等于零,没有大于/小于零?貌似只能一个个数~ a=input() assert(a>=2) b=2 i=1 while true: if a - i * b == 0: # 能整除,当前的b即为所求的q return b for j in range(1,b): if a - i * b - j == 0: # 不能整除, 检查下一个b值 b++ i=0 break else: # i不够大,除法没模拟完 i++ 十一月 20, 2021,由jas修改 链接到点评
jas 发布于十一月 20, 2021 分享 发布于十一月 20, 2021 (已修改) 试着用题目指令写了下,假设输入位于地址N,输出保存到地址RESULT 地址Q、TEMP_IQ、INC_Q等大概要换成100、101、200这样的数字 也许可行的优化:如果 q - j == 0 ,就认定n是质数,提前输出n自己 line op (num ,)address comments INIT WRITE 2,Q 初始化 WRITE 1,I WRITE 0,J START MOVEA I 以下:检查n - i * q + j == 0 是否成立 MOVEB Q MULT SAVE TEMP_IQ MOVEA N MOVEB TEMP_IQ SUB JUMPIFZERO FINISH n - i * q == 0成立,程序结束 SAVE TEMP_N-IQ MOVEA J 以下:对j属于[1-q,-1],检查n - i * q + j == 0 能否成立 MOVEB Q SUB SAVE J MOVEA J INC_J INC JUMPIFZERO INC_I j遍历结束 SAVE J MOVEA J MOVEB TEMP_N-IQ ADD JUMPIFZERO INC_Q n - i * q + j == 0 成立,检查下一个q JUMP INC_J 继续遍历j INC_Q MOVEA Q INC SAVE Q WRITE 1,I JUMP START INC_I MOVEA I INC SAVE I JUMP START FINISH MOVE Q,RESULT 存入地址RESULT 十一月 20, 2021,由jas修改 注释 Eternalcycle 40.00节操 链接到点评
jas 发布于十一月 20, 2021 分享 发布于十一月 20, 2021 (已修改) 3 小时前, 921836774 说道: 这样怎么判断i*q已经大于n了 n-1, n-2, ... n-i*q+1 之一等于零 十一月 20, 2021,由jas修改 链接到点评
jas 发布于十一月 20, 2021 分享 发布于十一月 20, 2021 2 小时前, TXPH 说道: 这边都不让用呀,其实另一节课都学了,这些都会的,但这节课没学那么多,就只让用手写一步一步列出来 大概就是WRITE 0 A MOVE A 0 MOVE B 1 ADD SAVE 3 OUTPUT 3 这个样子的。。 3l只是我的思路,简单起见就用python描述了。10l有翻译成题目给的指令 链接到点评
推荐贴