(第一列)C语言常见基础题型,确定不看一下?:找完数---- {一个关键点三种写法}。

简介: (第一列)C语言常见基础题型,确定不看一下?:找完数---- {一个关键点三种写法}。

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

思路:首先找出它的因子,然后加起来与原数比较,相等则是完数,反之不是完数。思路简单,关键在于如何找因子


第一种写法:

关键处解析:因为每个数都有个共同因子1,所以 j 要从1开始,注意(容易出错):j 是不能与 i 相等的,一个数除以本身能整除,但本身不是因子。此时sum的值为0,sum必须放在第一个for之内,第二个for之前,为了每一次循环sum的初始值为0。{注:sum+=j 等价于 sum=sum+j }


第二种写法:

关键处解析: 相比第一种解法,此时 j =2,sum=1 ,因为每个数都有因子1,我们可以跳过因子1的计算,直接令sum的初始值为1,这样每个数的因子都会加上1而不会漏掉。


第三种写法:

关键处解析: 相比第二种解法,此时的判断条件为 j<=(i/2),因为完数只能是偶数,偶数最大的因子就是这个数的一半,所以判断条件可以改为小于等于这个数的一半。

                                                                                                       


相关文章
|
6月前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
6月前
|
C语言
C语言实例——1000以内的所有完数
【1月更文挑战第16天】C语言实例——1000以内的所有完数。
95 0
|
6月前
|
C语言
c语言编程练习题:7-45 找完数
c语言编程练习题:7-45 找完数
62 0
|
6月前
|
C语言
[日常]C语言作业详解12_17(题型对应知识点)
[日常]C语言作业详解12_17(题型对应知识点)
55 0
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(二)
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(二)
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(一)
【初阶C语言】有关的经典题型内含数组及递归函数题型讲解(入门适用)(一)
|
人工智能 算法 C#
C语言经典算法实例7:完数
C语言经典算法实例7:完数
C语言经典算法实例7:完数
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
C语言经典实例:21-30例:插入排序、希尔排序1、快速排序、希尔排序2、递归法、完数、斐波那契数列、公约数和公倍数、判断水仙花数统计单词个数
|
C语言
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
106 0
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
|
C语言
[C语言学习]C语言程序设计基础(三)
[C语言学习]C语言程序设计基础(三)
158 0
[C语言学习]C语言程序设计基础(三)