- 5
- 0
- 约1.97千字
- 约 11页
- 2017-05-07 发布于天津
- 举报
反素数
反素数 140321030 吴磊 报告时间(2016-05-23) 问题描述 对于正整数 x,将其约数个数记为 n(x)。例如 n(1)=1,n(6)=4。如果某个正整数 x 满足:对于任意 i(0ix)都有 n(i)n(x),则称 x 为反素数。 现在给定一个区间[a,b],请你求出该区间的 x 使 n(x)最大。 对问题的理解和分析 针对此问题,我们要解决两个问题: 计算出[a,b]之间所有正整数的约数个数,并找到其中的最大值 找到第一个约数个数最大的正整数 算法与数据结构的选取 算法设计: 针对此问题,我们要解决两个问题: 首先需要知道正整数x的约数个数。 其次需要知道区间[a,b]中约数个数最大的约数值l。 为了求[a,b]区间内第一个约数最大的正整数,只需要穷举[a,b]间正整数的约数个数,当出现第一个约数个数为l是,记这个数为输出结果。 算法与数据结构的选取 实现方式及数据结构的选取: 针对一个正整数x,求它的约数个数,则需要新建一个初始值为0的变量j,让x除以[1,x]上的每个正整数,每当能整除的时候,让变量j的值加一,从而得到x的约数个数,令改算法函数为NX(x)。 为了求最大的约数,需新建初始值为0的变量l和m,遍历[a,b]上的每个约数个数,如果NX(x)大于l,将NX(x)的值赋予l,则遍历后得到[1,n]上第一个最大约数的数m,和最大约数的数量l。 核
原创力文档

文档评论(0)