题意
给出k和 这
个数,求所有勾股数三元组(x, y, z) (x<y<z)中,求
。注:x, y, z为正整数且小于等于1e9。
思路
不得不说我是完完全全的数论菜鸟,只会孙子定理的那种233。这道题真的是让我学会了好多东西。
在看思路之前,你需要了解如下知识。
1.如何快速判断两数是否一奇一偶
假设两数为a和b。则用一个表达式
(a-b)&1
即可完成。由于采用了位运算,所以效率很高。
原理:两数奇偶性相同,相减为偶数。两数奇偶性不同,相减为奇数。故两数做减法。&运算符为按位与,奇数的最低为是1,偶数是0。负数的补码一样适用这个规律。(自己开个计算器就懂了)
2.如何求一个数的所有质因数
话不多说,直接上代码。代码中m为被求,数组p里存访m的所有质因