c语言的编程题目,求大佬帮忙看看

编写程序,输入自然数n,输出1~n以内的所有完数,并输出其因子。一个数若恰好等于它的各因子之和,即称其为完数,如6=1+2+3,其中1、2、3为因子,6为因子之和。【注:... 编写程序,输入自然数n,输出1~n以内的所有完数,并输出其因子。一个数若恰好等于它的各因子之和,即称其为完数,如6=1+2+3,其中1、2、3为因子,6为因子之和。【注:要求输出时按以下格式连同完数的因子一同输出,每个完数输出占一行。】例如:输入30输出:6=1+2+328=1+2+4+7+14我现在写的代码可以做到输入1个数然后输出它的完数,但是怎么做到xxx=x+x+x的这种格式。能在我现在写的代码的基础上改动吗?? 展开
 我来答
格里编程办公技巧
科技发烧友

2021-10-28 · 编程、办公知识分享与学习
格里编程办公技巧
采纳数:434 获赞数:877

向TA提问 私信TA
展开全部

#Include<stdio.h>

int main()

{

char str[255]={'\0'};

int i, j, k,n;

int m = 0;

scanf("%d", &n);

for(i =2;i<=n; i++)

{

k = 0;

m = 0;

for(j=1;j<=i-1;j++)

if(i%j==0)

{

k += j;

sprintf(str, m==0 ? "%s%d\0" : "%s+%d\0", str, j);

m = 1;

}

if(k==i)

printf("%d=%s\n", i, str);

}

return 0;

}

追答
for里面m=0语句后面加上str[0]='\0';
听不清啊
高粉答主

2021-10-28 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

//求完数 

#include<stdio.h>

int sum1(int n)

{int s=1,i;

 for(i=2;i<=n/2;i++)

   if(n%i==0)s+=i;

 return s;  

}

int main()

{ int i,j,n;

  scanf("%d",&n);

  for(i=2;i<n;i++)

    if(sum1(i)==i)

    {printf("%d=1",i);

     for(j=2;j<=i/2;j++)

       if(i%j==0)printf("+%d",j);

     printf("\n");  

}

 return 0;

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
岔路程序缘

2021-12-04 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3404万
展开全部
编写程序,输入自然数n,输出1~n以内的所有完数,并输出其因子。一个数若恰好等于它的各因子之和,即称其为完数,如6=1+2+3,其中1、2、3为因子,6为因子之和。【注:要求输出时按以下格式连同完数的因子一同输出,每个完数输出占一行。】例如:输入30输出:6=1+2+328=1+2+4+7+14我现在写的代码可以做到输入1个数然后输出它的完数,但是怎么做到xxx=x+x+x的这种格式。能在我现在写的代码的基础上改动吗??
答:能在你的代码的基础上改动完成题目要求。
方法:把if(k==i)printf("%d\n",i);
这一句改成下面的语句即可:
if(k==i){
printf("%d=",i);
k=0;
for(j=1;j<i;j++)
if(i%j==0){
k++;
if(k!=1)printf("×");
printf("%d",j);
}
printf("\n");
}
就可以了。
如果有什么不明白之处请留言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
microroom
科技发烧友

2021-10-28 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1561万
展开全部
代码:
#include <stdio.h>
int main()
{
int i,j,k,n,x;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
k=0;
for(j=1;j<=i/2+1;j++)
if(i%j==0)
k+=j,x=j;
if(i==k)
{
printf("%d=",i);
for(j=1;j<=i/2+1;j++)
if(i%j==0)
{
printf((x!=k ? "%d+" : "%d\n"),j);
k-=j;
}
}
}
return 0;
}
追答

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
su790324
2021-10-29 · TA获得超过101个赞
知道小有建树答主
回答量:120
采纳率:66%
帮助的人:48.4万
展开全部
#include <iostream>

#include <vector>
using namespace std;

vector<int> factor;

void cal_wan(int n)
{
factor.clear();
for(int i=1;i<n;i++)
{
if(!(n%i))
factor.push_back(i);
}

int sum = 0;
for(int i=0;i<factor.size();i++)
sum += factor[i];

if(sum == n)
{
cout<<n<<"=";
for(int i=0;i<factor.size()-1;i++)
cout<<factor[i]<<"+";
cout<<factor.back()<<endl;
}
}

int main(int argc,char** argv)
{
int n;

cout<<"please input a number:"<<endl;
cin>>n;

for(int i=2;i<n;i++)
cal_wan(i);

system("pause");

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式