任意给定一个大于1的的正整数n,设计一个算法求出n的所有因数——————————————————————————————教辅上的答案:根据因数的定义1.判断n是否等于2,若n等于2,
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 14:41:41
任意给定一个大于1的的正整数n,设计一个算法求出n的所有因数——————————————————————————————教辅上的答案:根据因数的定义1.判断n是否等于2,若n等于2,
任意给定一个大于1的的正整数n,设计一个算法求出n的所有因数
——————————————————————————————
教辅上的答案:
根据因数的定义
1.判断n是否等于2,若n等于2,则因数为1,n
若n大于2,则执行第二步
2.依次从2到n-1检验是不是能整除n,若可以,则是n的因数.若不可整除n,则非n的因数.
3.输出所有n的因数
——————————————————————————————
我的疑惑:
1.答案中的第一步为什么要特别说明n=2这种情况,为什么不合并写成当n大于等于2呢?
2.第二步中为什么说"依次从2到n-1",而不是“依次从2到n”呢?
任意给定一个大于1的的正整数n,设计一个算法求出n的所有因数——————————————————————————————教辅上的答案:根据因数的定义1.判断n是否等于2,若n等于2,
显然楼上两位都没有认真思考啊
教辅书上的写法是正确的.对于你的第一个疑惑:之所以判断是否等于2,是因为2只有两个因数,即1和2;如果不做n是否等于2的分类讨论,那你试着把n=2带入到步骤“2”当中,显然所谓的“从2到n-1”是指数字依次增大,而从2到1则不满足条件,所以不可以合并.
明白了吗?
你说的都可以
1.其实第一步中特别说明n=2这种情况,主要就是要来区别第二步的,如果没有说明的话,那么第二步中的检验就要从2到n,这样才不会出问题~~,考虑到它的为什么要分步,我个人觉得是因为一种算法的快速性(效率),因为这样第二步就可以少检验一个数
2。个人觉得,n的因数本来就包括N的,这很明显,这样的话就只需要检验2到n-1,就象1为什么不用检验一样
PS。这个题目怎么有点象我做C语言的作...
全部展开
1.其实第一步中特别说明n=2这种情况,主要就是要来区别第二步的,如果没有说明的话,那么第二步中的检验就要从2到n,这样才不会出问题~~,考虑到它的为什么要分步,我个人觉得是因为一种算法的快速性(效率),因为这样第二步就可以少检验一个数
2。个人觉得,n的因数本来就包括N的,这很明显,这样的话就只需要检验2到n-1,就象1为什么不用检验一样
PS。这个题目怎么有点象我做C语言的作业。。。汗
收起
第一步:依次以2~(n-1)为除数去除n,检查余数是否为0.若是,则是n的因数;若不是,则不是n的因数;
第二步:在n的因数中加入1和n;
第三步:输出n的所有因数.
1.嗯,貌似是可以合并
2.当然得是n-1,不然数不全,不然你随便拿个数试试
教辅的算法排除了1和n 因为1和n 必然是n的因数 不需要检验
所以第二步是从2到n-1进行检验
第一步的n=2 是配合了第二步的 因为当n=2时 n-1=1从2到n-1的检验方法在计算时会产生矛盾