转跳到内容

又来问作业了(计算机相关)


TXPH

只显示该作者

只有该作者的内容显示中。 返回到主题

推荐贴

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++ 
,由jas修改
链接到点评

试着用题目指令写了下,假设输入位于地址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

 

,由jas修改
注释
Eternalcycle Eternalcycle 40.00节操
链接到点评
2 小时前, TXPH 说道:

这边都不让用呀,其实另一节课都学了,这些都会的,但这节课没学那么多,就只让用手写一步一步列出来:mx040:

 

大概就是WRITE 0 A

              MOVE A 0

              MOVE B 1

              ADD

              SAVE 3

              OUTPUT 3 

这个样子的。。

3l只是我的思路,简单起见就用python描述了。10l有翻译成题目给的指令

链接到点评
  • 骚男锁定了本主题
游客
此主题已关闭。
×
×
  • 新建...

重要消息

为使您更好地使用该站点,请仔细阅读以下内容: 使用条款