39节 问题求解——求素数 课后
来源:互联网 发布:linux系统制作iso镜像 编辑:程序博客网 时间:2024/06/05 06:55
这节课课后题有点多,我们慢慢来搞定
项目一
1.代码:
<pre name="code" class="cpp">/*完数-1输入一个数n,判断n是否是完数*/#include <stdio.h>#include <math.h>int main(){ int i,sum=1,s,b; double k; char c; do { rewind(stdin);//重置缓冲区,以免输入字符等数据时对s的错误赋值 b=scanf("%d",&s); if((b==0&&((c=getchar())<48))||((c=getchar())>57))//判断输入的数是否有特殊字符和字母,这里全角的符号暂时无解,我不知道计算机怎么存储的。 { printf("请重新输入一个数\n"); continue; } else { k=sqrt(s); sum=1; for(i=2;i<=k;++i) { if(s%i==0) sum+=i+s/i; } if(sum==s&&sum!=1)//注意,1没有真因子,所以1不是完数,排除掉 { printf("该数为完数\n"); printf("1"); for(i=2;i<s;i++) { if(s%i==0) printf("+%d",i); } } else printf("该数不是完数\n"); } }while(1); return 0;}
代码有点乱,因为我写的代码都是先写核心,在慢慢补充功能,所以就成这样了!
2.代码:
/*完数-2输出1000以内所有的完数*/#include <stdio.h>#include <math.h>int main(){ int s,i,sum=1; double k; for(s=1;s<=1000;s++) { k=sqrt(s); sum=1; for(i=2;i<=k;i++) { if(s%i==0) sum+=i+s/i; } if(sum==s&&sum!=1) printf("%d ",s); } return 0;}
这题要注意,每次循环完sum的值一定要注意重置!
3.代码:
#include <stdio.h>int main(){ int i,k,suma,sumb; for(i=1;i<=300000;i++) { suma=0; for(k=i/2;k>0;k--) { if(i%k==0) suma+=k; } sumb=0; for(k=suma/2;k>0;k--) { if(suma%k==0) sumb+=k; } if(sumb==i&&sumb!=suma&&suma>i&&suma<=300000) { printf("i=%d,其亲密数为:%d\n",i,suma); } } return 0;}今天只做了一题,一直在想怎么才能输出每个因子相加的过程,事实证明实在是麻烦,重写一遍计算suma和sumb 实在没必要,浪费了一晚上,以后学到好办法在来搞定
0 0
- 39节 问题求解——求素数 课后
- 第39课 问题求解——求素数 【数字游戏 项目1-6】
- 第四周《C语言及程序设计》实践项目39 问题求解——求素数
- C语言初步-第39讲:问题求解——求素数(输出格式控制)
- C语言初步-第39讲:问题求解——求素数(练习综合)
- 问题求解课后作业
- 第十二周课后作业——递归求解——求最大公约数和最小公倍数
- Java课后习题——编写程序求100以内的素数并输出
- 数学问题——求回文素数
- 求解素数环问题
- 求解素数问题
- 求解素数问题
- DFS求解素数环问题
- 数学问题——求素数(常规做法)
- 数学问题——求素数(改进做法)
- 筛选法求素数(高效)——例题:孪生素数问题
- 学习笔记——求解素数问题之Eratosthenes(埃拉托色尼)筛选法
- 求素数问题
- ss使用教程-Mac OS X
- 随机洗牌算法
- 提高iOS开发效率的第三方框架等--不断更新中。。。
- 原型模式之深复制和浅复制
- struts2 中 action 属性自动注入的发现
- 39节 问题求解——求素数 课后
- 四六级作文模板——(有个笔记好看)
- Android 超高仿微信图片选择器 图片该这么加载
- kettle组件学习
- poj 2096 Collecting Bugs 期望dp 简单题
- POJ1125 dijkstra求任意两点距离
- [NOIP2006]开心的金明 T2
- 01_基本SQL SELECT语句 - Oracle学习笔记
- HDU 3315 My Brute KM算法