摘要: 判断是否为素数(一般方法): 时间复杂度O(sqrt(n)) //1 bool Find_prime(int n) { if(n<=1) return false;//特判 else{ for(long long i=2;i*i<=n;i++){//开longlong防止i*i溢出 if(n%i== 阅读全文
posted @ 2022-04-13 20:43 顾南 阅读(197) 评论(0) 推荐(0)
摘要: 思路: 将除数看作整体。先将大数的第一个高位与除数作比较,如果小于除数(不够除)则该位商为零,并将该位乘以10加上下一位的值保存到余数中(即上一位的余数乘以10加上该步的位的值);如果大于或等于除数(够除),则商即为对应除后的商,余数为对应余数。计算完后要注意高位可能有多余的零,要忽视这些零,但要保 阅读全文
posted @ 2022-04-12 13:26 顾南 阅读(109) 评论(0) 推荐(0)
摘要: 思路:将低精度num看成一个整体(int存储),再用高精度的低位依次乘num,个位作为结果,其他位作为进位传递。 输入、输出、转换与高精度加法一样。最后要注意判断进位是否为零,若不为零则用循环取个位依次存储至数组高位(进位可能不止一位)。 代码: #include<cstdio> #include< 阅读全文
posted @ 2022-04-12 13:10 顾南 阅读(83) 评论(0) 推荐(0)
摘要: 思路: 模拟竖式减法。 同高精度加法。 区别在于进行减法时要判断两数的大小,计算完成后要注意高位的可能有多余的零,要忽略这些零(直接让其长度减1)但要保证结果至少有一位数。 假设第一个数为a,第二个数为b。若a<b记为-1,若a>b记为1,相等则记为0。当结果为-1时,传参数时要把b作为第一个参数, 阅读全文
posted @ 2022-04-11 22:47 顾南 阅读(36) 评论(0) 推荐(0)
摘要: 思路: 模拟竖式加法。 用char数组存储输入的数字串的每一位,转为Int后利用循环从低位开始对两数进行加法,个位作为结果,十位作为进位,依次类推。注意最后进位的大小,若进位不为零,则直接将进位存到最高位。 数字字符转为数字:用数字字符直接减去‘0’(ASCII码为48)就可以完成转换。 可以用结构 阅读全文
posted @ 2022-04-11 22:25 顾南 阅读(36) 评论(0) 推荐(0)