什么是加拿大3余算法?
“3余”是用于计算非负整数n的余数的算法,具体指的是该数除以3的余数。比如584除以3等于194……2,其中2就是584对3的余数;又如-560除以3等于-187……1,其中1就是-560对3的余数。 3余算法是一种快速、高效的算法,其基本思路是把被除数和除数都同时除以3,然后再分别求余数。由于每次除以3之后,被除数与除数同余,因此可以多次运用这个算法直到求出结果为止。
基于上述原理,我们可以编制一个简单的计算机程序,实现3余算法。例如,要计算100以内所有素数的和,就可以编成一个计算素数问题的程序,然后输入100,让电脑自动运行程序并输出结果。在windows平台上,用c语言编写的一个测试程序如图1所示(已经过调试)。运行结果如图所示。 从图中可以看出,当输入100后,经过6次递归计算,程序最终得到了答案(注意:因本人数学基础太差,不知道是否还有其他更快更精准的算法,还望高人指教!)