题目链接:点我
题目
题意:
输出所有的可以表示为至少两个不同数的次方的形式数.
思路:
先用素数筛选法找出64以内的合数,以为只有幂是合数才可以进行拆分。然后枚举底数进行判断,所有小于264-1的数都是满足的,这里有一个技巧,就是说264-1已经是unsign long long 的最大值了,那么超过它的数就会变成负数。但其实i的最大次幂是可以求的,x = logi(2^64-1) = log(2^64-1) / log(i);
代码:
1 |
|
题目链接:点我
输出所有的可以表示为至少两个不同数的次方的形式数.
先用素数筛选法找出64以内的合数,以为只有幂是合数才可以进行拆分。然后枚举底数进行判断,所有小于264-1的数都是满足的,这里有一个技巧,就是说264-1已经是unsign long long 的最大值了,那么超过它的数就会变成负数。但其实i的最大次幂是可以求的,x = logi(2^64-1) = log(2^64-1) / log(i);
1 | #include<cstdio> |