| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 693 人关注过本帖
标题:acm 1000以内完数,代码错了不会改,求大神修改下或者帮忙指点
只看楼主 加入收藏
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
结帖率:82.61%
收藏
已结贴  问题点数:10 回复次数:3 
acm 1000以内完数,代码错了不会改,求大神修改下或者帮忙指点


问题 O: 1000以内的完数

题目描述

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

本题要求使用函数实现,函数原型

void startJudge(int value) {

        if(  Judge(value) ) {

             printf("%d ",value);   

        }

}
输入

一个sum (sum < 1000) ,表示测试数据的组数,接着sum行,每一行表示一个测试数据n,表示要求1到n以内的完数,1在这里不算是完数。

输出

范围内的完数,如果范围内没有完数请输出none,每组测试数据空出一行(如果完数有多个,每个数字后面都输出空格)。
样例输入

2
1
6

样例输出

none
6

我的错代码:
#include<stdio.h>
int main()
{
    int n,i,sum,j,k,m;
    scanf("%d",&j);
    sum=0;
    for(k=0; k<j; k++)
    {
        scanf("%d",&n);
        for(m=1; m<n; m++)
        {
            for(i=1; i<m; i++)
            {
                if(m%i==0)
                    sum=i+sum;
            }
        }
        if(sum==m)
        {
            printf("%d ",sum);
        }


        if(sum==0)
        {
            printf("none\n");
        }
    }
}


我的代码只符合样例,输入100,1000就是错,,,,,,,,,不要管题目要求里的函数。
2016-12-27 19:56
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:7 
我记得一千以内的只有三个6 28 496~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-27 19:58
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
收藏
得分:0 
回复 2楼 九转星河
代码,,,,,,,,,,

什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2016-12-27 19:58
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
这个是我从图形专区copy过来的~

要符合题目要求就得改改输入输出格式~

程序代码:
#include<stdio.h>
int fun(int n,int a[])//n为所求数据
{
    int i=2,k=1,j=1;//i从2开始//k为求和//j为记录数组下标

    if (n==1)//考虑特殊情况
        return 0;

    for (;i<=n/2;i++)//比较到n/2就行了~
        if (n%i==0)
        {
            k+=i;//求和
            a[j++]=i;// 保存数据
        }
    
    return k;
}
int main()
{
    int n,a[1000]={0};//保存完数的数组
    int i=1;
    a[0]=1;


    for (i=1;i<1000;i++)
    {
        if (i==fun(i,a))//
        {
            printf("%3d:\nits factors are:\n",i);
            for (n=0;a[n];++n)
                printf("%d ",a[n]);

           printf("\n");
        }
    }
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-27 20:03
快速回复:acm 1000以内完数,代码错了不会改,求大神修改下或者帮忙指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027625 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved