水上漂 发表于 2008-9-23 10:36

请教各位一个题目

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

hp15265615 发表于 2008-9-23 10:54

没有编,简单考虑了一下不知道对不对:
做到1到1000的循环,顺序找到每个数的因数,如6,计算6%1、6%2,6%3……6%5.有余数即不是因数。求因数的和s,判断与6相等(6=1+2+3),若相等输出,继续下个数;不相等继续下个数。
不是很难

有时间编一下程序供大家指正!

[[it] 本帖最后由 hp15265615 于 2008-9-23 11:03 编辑 [/it]]

josen0205 发表于 2008-9-23 15:37

[code]#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
        int i = 0, j = 0, sum = 1;
        char str[512];

        for(i = 2; i <= 1000; i ++)
        {
                sum = 1;
                memset(str, 0x00, sizeof(str));

                sprintf(str, "%d", sum);
                for(j = 2; j < i; j ++)
                {
                        if(0 == i%j)
                        {
                                sum += j;
                                sprintf(str+strlen(str), " + %d", j);
                        }
                }
                if(sum == i)
                        printf("%4d = %s\n", sum, str);
        }
        return 0;
}[/code]

smltq 发表于 2008-9-24 16:27

#include <stdio.h>
#include <math.h>
int main()
{
        long n,zp,zk,i;
        for(n=2;n<20;n++)
        {
                zp=(long)pow(2,n)-1;
                for(i=2,zk=(long)sqrt(zp);i<=zk;i++) if(zp%i==0) break;
                if(i>zk) printf("%.lf\n",(pow(2,n-1)*zp));
        }
        return 0;
}

语文不及格 发表于 2008-9-24 16:34

去下一个 C语言经典例题100例

百度上大把有,这个可能合适现在程度的你!

水上漂 发表于 2008-9-25 15:34

恩 那个上面的源程序我看过 不过看不懂 好像不太对 它上面那个

w0nfer 发表于 2008-9-25 17:28

#include <stdio.h>
int main()
{
int num;
int i;
for(num=1;num<=1000;num++)
{        int sun=0;
        for(i=1;i<=(num/2);i++)
        {         
                if(num%i==0)
                { sum=sum+i;}
        }
if(sum==num) printf("%d\n",num);
}
}

[[it] 本帖最后由 w0nfer 于 2008-9-25 17:40 编辑 [/it]]

进步一点点 发表于 2008-9-25 23:55

#include "stdio.h"
int f(n)
{int i,y=0;
        for(i=1;i<n;i++)
          if(n%i==0)
             y+=i;  
          return y;
}
main()
{int  n;
        for(n=1;n<1000;n++)  
          if(n==f(n))
            printf("%d   ",n);

水上漂 发表于 2008-9-26 17:15

谢谢各位了 各位的程序都可以 运行结果也正确  w0nfer的代码那个 应该是 int sum=0吧 呵呵;
谢谢各位了

smltq 发表于 2008-9-26 21:53

哪个速度更快呢LZ - -

页: [1]

编程论坛