问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...因子之和相等,则称该数为一个"完数",如:6=1+2+3.求出10000以内的所 ...

发布网友 发布时间:2024-10-24 11:33

我来回答

2个回答

热心网友 时间:2024-11-01 19:41

我给楼主代码吧,C语言的!
/*
2014年6月4日19:22:35
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1,2,3,而6 = 1 + 2 + 3,因此6是“完数”。
编程序找出1000之内所有的完数,并按下面格式输出其因子;
6 its factors are 1, 2, 3
注:根据补码的知识,int类型占4个字节,它所能表示的最大正整数为2的31次方减1,这个数等于2147483647
*/
#include <stdio.h>
#include <malloc.h>
void Input_1(int *, int *, bool *);
void Deal_1(int *, int *, int *);
void Deal_2(int *, int *);
void Deal_3(int *, int *, int *);
void Deal_4(int *, int *, int *);
void Output_1(int *, int *, bool *);
int main(void)
{
bool flag_1 = 1, flag_2 = 1;
while(flag_1)
{
int a, b, cont_1 =0;

Input_1(&a, &b, &flag_2);

Deal_1(&a, &b, &cont_1);

int * u = (int *)malloc(cont_1 * sizeof(int));

Deal_3(&a, &b, u);

Output_1(&cont_1, u, &flag_1);
}

return 0;
}
void Input_1(int * p, int * q, bool * r)
{
bool flag_1 = 1, flag_2 = 1;
while(*r)
{
printf("请按照提示输入要进行完数查找的起始数字和截止数字!\n");
*r= 0;
}
while(flag_1)
{
printf("请输入进行完数查找的起始数字(大于零的正整数):");
scanf("%d", p);
while(getchar() != '\n')
{
continue;
}
if(*p <1)
{
printf("您输入的数字有误,请按照提示重新输入!\n");
}
else
{
flag_1 = 0;
}
}
while(flag_2)
{
printf("请输入进行完数查找的截止数字(大于等于起始数字正整数):");
scanf("%d", q);
while(getchar() != '\n')
{
continue;
}
if(*q < *p )
{
printf("您输入的截止数字有误,请按照提示重新输入!\n");
}
else
{
flag_2 = 0;
}
}
return;
}
void Deal_1(int * p, int * q, int * s)
{
int i;
for(i=*p;i<=*q;i++)
{
Deal_2(&i, s);
}
}
void Deal_2(int * t, int * s)
{
int j, int sum = 0;
for(j=1;j<*t;j++)
{
if(*t % j == 0)
{
sum = sum + j;
}
}
if(*t == sum)
{
(*s)++;
}
}
void Deal_3(int * p, int * q, int * u)
{
int i, k = 0;
for(i=*p;i<=*q;i++)
{
Deal_4(&i, u, &k);
}
}
void Deal_4(int * t, int * u, int * v)
{
int j, int sum = 0;
for(j=1;j<*t;j++)
{
if(*t % j == 0)
{
sum = sum + j;
}
}
if(*t == sum)
{
*(u+ *v) = *t;
(*v)++;
}
}
void Output_1(int * s, int * u, bool * w)
{
char ch;
int i,j;
if(*s == 0)
{
printf("\n没有符合条件的数字!\n");
}
else
{
printf("\n符合条件的完数共有%d个,它(们)是:\n", *s) ;
for(i=0;i<*s;i++)
{
printf("%d,因子有:\n",*(u+i));
for(j=1;j<*(u+i);j++)
{
if(*(u+i)% j == 0)
printf("%-5d",j);
}
printf("\n");
}
}
printf("是否重新执行本程序?是请输入Y(y),否则退出程序:");
ch = getchar();
while(getchar() != '\n')
{
continue;
}
if(ch == 'Y' || ch == 'y')
{
printf("\n");
}
else
{
*w = 0;
}
}
/*
在VC++6.0中输出结果为:
请按照提示输入要进行完数查找的起始数字和截止数字!
请输入进行完数查找的起始数字(大于零的正整数):1
请输入进行完数查找的截止数字(大于等于起始数字正整数):10000
符合条件的完数共有4个,它(们)是:
6,因子有:
1 2 3
28,因子有:
1 2 4 7 14
496,因子有:
1 2 4 8 16 31 62 124 248
8128,因子有:
1 2 4 8 16 32 64 127 254 508 1016 2032 4064
是否重新执行本程序?是请输入Y(y),否则退出程序:Y
请输入进行完数查找的起始数字(大于零的正整数):1
请输入进行完数查找的截止数字(大于等于起始数字正整数):1000
符合条件的完数共有3个,它(们)是:
6,因子有:
1 2 3
28,因子有:
1 2 4 7 14
496,因子有:
1 2 4 8 16 31 62 124 248
是否重新执行本程序?是请输入Y(y),否则退出程序:N
*/

热心网友 时间:2024-11-01 19:49

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 ...等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是... 墨水瓶的容积约是20( ) 微波炉的体积约是40( ) 酸奶盒的容积约是240... 英语语法背诵小窍门 一个文具盒的体积大约是0.35( ) 一个苹果的体积大约是120( ) 一 电锯惊魂和死神来了 作文家乡的名人钱敏丹 写我敬佩一个人钱敏丹作文 傀儡少女之冷艳小公主小说txt全集免费下载 马克公馆基本信息 和男朋友分手了10天了,心里依然会想他,衣服还在我这,我觉得两个人会分 ... 从深圳沙井客运站坐什么车到新桥客运站要详 华润柒公馆如何 搞笑姐妹句子 1个杯子能装0.2L水.1瓶水2.5L.9杯水倒入瓶子后,装满瓶子还要多少ml_百 ... 正成沙河明珠基本信息 东莞汽车总站到深圳市沙井中心客运站要多少时间?具体做什么车 人们常说麽一天最少要喝八杯水,可杯子大小不同,到底是多少毫升!求解 请问成都成华区内偏东北方向三环内有哪些精装小区?我就知道龙湖三千城... 新禧苑基本信息 一杯饮料.喝去一半.又往杯中加入4分之3L.这时杯中比原来少12之1L.这... ...一个数正好等于它的所有因子(即能整除)之和,则称这个数为完数。例如... 春兰空调避免上当的一个大问题 为什么都说倒置式屋面好? 家里空调坏了 想换台买什么的好?听人说不要买变频的,不知道为什么。是商... 我想买两个空调,可不知哪个牌子的好,请大家帮帮忙 研究科创板或者技术型企业必看“市研率” 乒乓球拧拉分两种,想提高上台率,这种拧拉动作要掌握 六个月宝宝一天拉五次怎么办 降量是什么意思? ...0,正无穷大)上的单调性,并用定义证明你的结论 6个多月的宝宝有点拉肚子(一天三四次)怎么办? PE、PEG、市销率、市研率等估值方法综合评价以下股票,并估算其内在价值... ...等于0)在(-b/2a,正无穷大)上的单调性,并"证明"你的结论 ...如果小明再多收集6个,他的废电池个数就是小亮的2倍。根据题意列出... 墙面瓷片铺贴方式有多少种 ...如果小明再多收集6个,他的废电池个数就是小亮的2倍,根据题意列出整... ...y=根号x在区间[0,正无限大]上的单调性,并证明结论. 为何遥感中时间分辨率与空间分辨率,辐射分辨率与波谱分辨 对勾函数y=x+a/x在(0,正无穷)上的单调性,并给出证明. 超级强势股编辑推荐