快速判断一个数能否被1、2、3、4、5、6、7、8、9、10、11、12、13、17、19、23等整除的规律

快速判断一个数能否被1、2、3、4、5、6、7、8、9、10、11、12、13、17、19、23等整除的规律总结

(1) 1与0的特性: 1是任何整数的约数,即对于任何整数a,总有1|a. 

          0是任何非零整数的倍数,a≠0,a为整数,则a|0. 


(2) 若一个整数的末位是0、2、4、6或8,则这个数能被2整除。 


(3) 若一个整数的数字和能被3整除,则这个整数能被3整除。 


(4) 若一个整数的末尾两位数能被4整除,则这个数能被4整除。 


(5) 若一个整数的末位是0或5,则这个数能被5整除。

 
(6) 若一个整数能被2和3整除,则这个数能被6整除。 


(7) 若一个整数的个位数字截去,再从余下的数中,减去个位数的2倍,如果差是7的倍数,则原数能被7整除。

如果差太大或心算不易看出是否7的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到能清楚判断为止。

例如,判断133是否7的倍数的过程如下:13-3×2=7,所以133是7的倍数;

又例如判断6139是否7的倍数的过程如下:613-9×2=595 , 59-5×2=49,所以6139是7的倍数,余类推。 


(8)若一个整数的未尾三位数能被8整除,则这个数能被8整除。 


(9)若一个整数的数字和能被9整除,则这个整数能被9整除。

 
(10)若一个整数的末位是0,则这个数能被10整除。 


(11)若一个整数的奇位数字之和偶位数字之和差能被11整除,则这个数能被11整除。

          11的倍数检验法也可用上述检查7的「割尾法」处理!过程唯一不同的是:倍数不是2而是1! 


(12)若一个整数能被3和4整除,则这个数能被12整除。 


(13)若一个整数的个位数字截去,再从余下的数中,加上个位数的4倍,如果差是13的倍数,则原数能被13整                 除。如果差太大或心算不易看出是否13的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到             能清楚判断为止。 

 

(14)若一个整数的个位数字截去,再从余下的数中,减去个位数的5倍,如果差是17的倍数,则原数能被17整                  除。如果差太大或心算不易看出是否17的倍数,就需要继续上述「截尾、倍大、相减、验差」的过程,直到               能清楚判断为止。 


(15)若一个整数的个位数字截去,再从余下的数中,加上个位数的2倍,如果差是19的倍数,则原数能被19整                   除。如果差太大或心算不易看出是否19的倍数,就需要继续上述「截尾、倍大、相加、验差」的过程,直到             能清楚判断为止。

 
(16)若一个整数的末三位与3倍的前面的隔出数的差能被17整除,则这个数能被17整除。 
(17)若一个整数的末三位与7倍的前面的隔出数的差能被19整除,则这个数能被19整除。 
(18)若一个整数的末四位与前面5倍的隔出数的差能被23(或29)整除,则这个数能被23整除

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用RISC-V写一段快速排序的程序,可以这样写:首先,定义一个组,将要排序的据存储在里面;其次,选择一个基准,然后从组的头部开始遍历,将比基准小的放到左边,比基准大的放到右边;最后,重复上述步骤,直至完成排序。 ### 回答2: 使用RISC-V语言编写快速排序算法需要以下步骤: 1. 实现快速排序算法的主体函(例如`quickSort`)。该函接收一个组和组的起始位置与结束位置作为参。 2. 判断起始位置与结束位置是否已经交叉,若是则返回。 3. 选择一个基准元素(通常选择组的最后一个元素),作为比较的标准。 4. 定义两个指针`i`和`j`,分别指向组的起始位置和结束位置。 5. 在指针`i`小于指针`j`的情况下,循环执行以下操作: - 从左侧开始,移动指针`i`直到找到一个比基准元素大的元素。 - 从右侧开始,移动指针`j`直到找到一个比基准元素小的元素。 - 如果指针`i`仍然小于指针`j`,则交换这两个元素。 6. 当指针`i`大于等于指针`j`时,交换指针`i`和基准元素的值。 7. 递归地调用`quickSort`函,将组分为两个子组,分别对子组进行排序,子组的范围从起始位置到指针`i-1`和从指针`i+1`到结束位置。 8. 返回排序后的组。 以下是一个用RISC-V语言编写的示例代码: ``` .data arr: .word 9, 7, 5, 11, 12, 2, 14, 3, 10, 6 len: .word 10 .text .globl main main: la a0, arr lw a1, len addi a2, zero, 0 addi a3, a1, -1 jal quickSort # 在这里打印排序后的组 la a0, arr lw a1, len li a7, 1 ecall j finish # 快速排序算法 quickSort: addi sp, sp, -12 sw a0, 0(sp) sw a1, 4(sp) sw a2, 8(sp) lw a1, 4(sp) # 起始位置 lw a2, 8(sp) # 结束位置 sub t1, a2, a1 beq t1, zero, exit lw t0, 0(sp) # 组地址 la t2, arr add t0, t0, t2 addi a2, a2, 1 sll a2, a2, 2 add a3, t0, a2 # 基准元素地址 lw a4, 0(a3) # 基准元素值 addi t1, a1, -1 addi t2, a2, -4 add t3, t0, t1 add t4, t0, t2 sw a1, 0(t3) sw a2, 0(t4) loop: addi a1, a1, 1 slt t0, a1, a2 beqz t0, endloop add t3, t0, t1 lw a5, 0(t3) slt t0, a4, a5 beqz t0, loop subi a2, a2, 1 bge a2, a1, loop j endloop endloop: add t3, t0, t2 add t4, t0, a2 sw a2, 0(t3) sw a1, 0(t4) sw a4, 0(a3) subi t1, a1, -1 subi t2, a2, 1 jal quickSort jal quickSort exit: lw a0, 0(sp) lw a1, 4(sp) lw a2, 8(sp) addi sp, sp, 12 jr ra finish: li a7, 10 ecall ``` 该代码使用递归实现了快速排序算法,并且能够输出排序后的组。注意,这只是一个示例代码,可能需要根据具体的需求进行修改和优化。 ### 回答3: 使用RISC-V写一段快速排序的程序,需要经过以下步骤: 1. 在寄存器中保存组的首地址和尾地址,以及用于归位的左右指针。 2. 将首地址和尾地址放入相应的寄存器中,同时将左指针指向首地址,右指针指向尾地址。 3. 判断左指针和右指针是否相遇,如果相遇则跳过步骤7,进入步骤8。 4. 将左指针指向的元素(基准元素)和右指针指向的元素进行比较操作。 5. 如果左指针指向的元素小于等于基准元素,则将左指针向右移动一位。 6. 如果右指针指向的元素大于等于基准元素,则将右指针向左移动一位。 7. 如果左指针和右指针没有相遇,则将两个元素交换位置并分别移动指针。 8. 在基准元素的位置将组分为两部分,左半部分小于基准元素,右半部分大于基准元素。 9. 递归调用快速排序函,将左半部分和右半部分继续进行排序。 10. 重复以上步骤,直到完成整个数组的排序。 编写代码的过程需要注意合理利用寄存器和内存,控制指针的移动和比较操作。同时,需要定义递归函以便进行下一次排序。在实际编写中,还需要注意边界条件和错误处理,以保证程序的正确性。 以上是一种使用RISC-V写快速排序程序的方法,具体实现可能因环境、编译器和编程方式不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值