#1137. k 重完全数
k 重完全数
试题描述
一个数n为k重完全数,当且仅当S(n)=k*n,S(n)表示n的所有约数之和,如6就是一个2重完全数,因为6的约数(即能被6整除的自然数)为1、2、3、6,所以S(6)=1+2+3+6=2*6。现在需要你找出1到n之间所有的k重完全数。
输入要求
输入数据仅有一行包含两个整数n和k。其中n≤50000,k<5。
输出要求
按从小到大的次序依次输出求得的k重完全数,每行输出一个数。
输入样例
100 2
输出样例
6
28
知识点及提示
本题的关键是求一个自然数的约数和,我们知道约数都是成对出现的,如12的约数有3对,依次为(1,12)、(2,6)和(3,4),每对约数的乘积都等于12,也就是说如果j是12的约数,则它的另一半就是12 div j。下面给出基于这一思想的求i的约数和s的程序段,通过穷举每对约数中较小的数实现。
相关
在以下作业中: