C语言-求2-1000之间的完全数,暴力解题法

完全数
题目描述
编写一个程序,输出2~1000之间的完全数
完全数即该数字除本身外的各因子之和正好等于该数本身
例如:6=1+2+3
输入
无输入
输出
输出2~1000之间的所有完全数,数字之间用空格隔开


#include <stdio.h>

int main()
{
int i,j;

for(i=6;i<1000;i++)
{

int sum=0;
 
for(j=1;j<i;j++){
 
if(i%j==0)
 
sum = sum+j;
 
}
if(sum==i)printf("%d ",i);

}
 
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 摘 要 2 一、 方案比较、设计与论证 2 2 显示界面方案 2 3 输入方案: 3 二、理论分析与计算 3 1.交通灯显示时序的理论分析与计算 3 2.交通灯显示时间的理论分析与计算 5 三、电路图及设计文件 6 1.灯控制电路设计 6 2.倒计时显示电路设计 7 四、程序设计思路与流程图 7 1.主程序流程图 7 2.按键子程序流程图 8 五、测试、数据及结果分析 8 1.状态灯显示测试 8 2.数码管的测试 9 3.整体电路测试 9 六、总结 9 参考文献 9 附 录 10 摘 要 本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能 。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信 号灯的点亮时间以及根据具体情况手动控制等功能。 关键词:AT89S51;交通规则 一、 方案比较、设计与论证 1 电源提供方案 为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案 方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选 用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。 方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本; 缺点是输出功率不高。 综上所述,我们选择第二种方案。 2 显示界面方案 该系统要完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案: 方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无胜任题 目要。 方案二:完全采用点阵式LED 显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种 英文字符,汉字,图形等。 方案三:采用数码管与点阵LED 相结合的方因为设计既要倒计时数字输出,又要有状态灯输出等,为方便观看并 考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能 要,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我 们决定采用方案三以实现系统的显示功能。 3 输入方案: 题目要系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案: 方案一:采用8155扩展I/O 口及键盘,显示等。该方案的优点是: 使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O 口,但操作起来稍显复杂。 方案二: 直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的资源还比较 多,我们使用四个按键,分别是K1、K2、K3、K4。 由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择方案二。 二、理论分析与计算 1.交通灯显示时序的理论分析与计算 对于一个交通路口来说,能在最短的时间内达到最大的车流量,就算是达到了最佳的 性能,我们称在单位时间内多能达到的最大车流为车流量,用公式:车流量= 车流 / 时间 来表示。 先设定一些标号如图2-1 所示。 说明:此图为直方图,上边为北路口灯,右边为东路口灯,下边为南路口灯,左边为 西路口灯。图2-2 所示为一种红绿灯规则的状态图,分别设定为S1、S2、S3、S4,交通灯以这四的状态为 一个周期,循环执行(见图2-3)。 请注意图2-1b和图2-1d,它们在一个时间段中四个方向都可以通车,这种状态能在 一定的时间内达到较大的车流量,效率特别高。依据上述的车辆行驶的状态图,可以列 出各个路口灯的逻辑表,由于相向的灯的状态图是一样的,所以只需写出相邻路口的灯 的逻辑表;根据图2-3 可以看出,相邻路口的灯,它们的状态在相位上相差180°。因此最终只需写出一组S1、 S2、S3、S4的逻辑状态表。 如表2-1 所示。 表中的"×"代表是红灯亮(也代表逻辑上的0)," "是代表绿灯亮(也代表逻辑上的 1),依上表,就可以向相应的端口送逻辑值。 2.交通灯显示时间的理论分析与计算 东西和南北方向的放行时间的长短是依据路口的各个方向平时的车流量来设定,并且 S1、S2、S3、S4各个状态保持的时间之有严格的对应关系,其公式如下所示。 T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我们可以依据上述的标准来改变车辆的放行时间。按照一般的规则,一个十字路口可 分为主干道和次干道,主干道的放行时间大于次干道的放行时间,我们设定值时也应以 此为参考。 三、电路图及设计文件 1.灯控制电路设计 由于32个LED 来实现红绿灯状态,若直接接在单片机的口线,路口倒计时的显示就不能实现,所以本 次设计中采用一种新型的电路如图3-1 所示。 图中74LS04的作用是倒相和驱动,它输出的电流大约48mA,实际测试发现足以满足要 ,而且发光管也能达
构造n个(2<=n<=20)叶结点的的完全二叉树(完全二叉树意味着每个分支结点都有2个儿子结点),有多少种构造方? 注意:不改变n个结点的相对顺序,左右儿子不调换. 例如: 4个叶子节点A1,A2,A3,A4,可构造出如下完全二叉树,共5种。 再例如:5个叶子结点,A1,A2,A3,A4,A5,可构造出如下若干种完全二叉树形状,像这样的完全二叉树共有14种(下图并未全部列出). Input 输入n,表示构造的完全二叉树有n个叶结点(2<=n<=20).Output 输出构造的完全二叉树的种类. Sample Input 5 Sample Output 14 Hint 把所有叶节点从左到右编上号:1,2,…,n。 无论怎样构造的完全二叉树,根节点左边的左子树和右边的右子树又都是完全二叉树, 那么n个节点的完全二叉树构造方数等于左子树的构造方数乘以右子树的构造方数, 且要列举所有可能的左子树和右子树情况,而后相加。假设左子树的叶子为1,…,i。 右子树的叶子就是:i+1,…,n。 设n个叶子的完全二叉树构造方数为Total(n)。Total(n)的递归公式如下,这是Catalan数: Total(n) = for i=1 to n-1 sum(Total(i) * Total(n-i)) n>=2 Total(n)=1 n=1 考虑到计算Total(n)时,所有小于规模n的Total(n-1),…,Total(1)都可能被计算多次, 存在大量重复计算的问题。因此比较好的方是对i从2到n,边计算Total(i),边用表记录下来, 即备忘录的方,时间复杂度为O(n^2) 。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值