| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 16779 人关注过本帖, 2 人收藏
标题:编程找出1000之内的全部完数,
只看楼主 加入收藏
q601510717
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-22
结帖率:0
收藏(2)
已结贴  问题点数:20 回复次数:23 
编程找出1000之内的全部完数,
完数:一个数愉好等于它各因子之和。比如6=1+2=3
搜索更多相关主题的帖子: 编程 
2009-10-25 12:41
zenglw
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2009-10-22
收藏
得分:1 
我是用DEV编绎的 其它编绎器不知能不能通过 。。不好意思 我是新手

[ 本帖最后由 zenglw 于 2009-10-25 13:11 编辑 ]
2009-10-25 12:59
zenglw
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2009-10-22
收藏
得分:0 
不好意思 少了点
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    int swap(int n);
    int i,j;j=0;
    int t[10];
    for(i=1;i<1000;i++)
     if(swap(i))
      {
        t[j]=i;
        j++;
      }   
    printf("1000以内有%d个完数:",j);   
    for(i=0;i<j;i++)  
     printf("%d ",t[i]);
    printf("\n");  
    int k;   
    for(i=0;i<j;i++)
     {
       printf("\n%d的因子为:",t[i]);  
       for(k=1;k<t[i];k++)
        if(t[i]%k==0)  
         printf("%d ",k);
     }  
    system("pause");
}
     
     
     
    int swap(int n)
     {
       int s,i;
       s=0;
       for(i=1;i<n;i++)
        {
          if(n%i==0)
          s=s+i;
        }
       int m;
       if(n==s) m=1;
       else m=0;
       return(m);
     }
2009-10-25 13:02
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:1 
第一次见到什么时候要用变量就什么时候定义的方法

我可好玩啦...不信你玩玩^_^
2009-10-25 13:11
q601510717
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-22
收藏
得分:0 
回复 4楼 pgy
能说清楚点吗?谢谢
2009-10-25 13:14
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:1 
#include<stdio.h>  
void main()  
{  
    int n,i,j,w;  
    for(n=6;n<=1000;n++)  
     {  
       for(w=0,j=1;j<=n/2;j++)  
        if(n%j==0)  
          w+=j;  
        if(w==n)  
         printf("%d\n",n);  
      }  
    getch();  
}
只求完数,不求因子!

离恨恰如春草,更行更远还生。
2009-10-25 13:15
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
3楼算法是对的,编译标准不标准不敢说,起码我这里的编译器不能通过。我查查标准
说说算法,你结合3楼程序看
程序的主要任务是判断一个数的因子和是否等于该数
先求因子,swap函数的作用是判断所有因子之和是否等于该数,是就返回1,else返回0
然后主函数输出1到1000中有几个完数,完数是多少,完数的因子
程序代码:
#include<stdio.h>  
#include<stdlib.h>  
#include<math.h>  
int main()  
{  
    int swap(int n);  
    int i,j;j=0;  
    int t[10];  
    for(i=1;i<1000;i++)  
     if(swap(i))  
      {  
        t[j]=i;  
        j++;  
      }    
    printf("1000以内有%d个完数:",j);    
    for(i=0;i<j;i++)   
     printf("%d ",t[i]);  
    printf("\n");   
    int k;    
    for(i=0;i<j;i++)  
     {  
       printf("\n%d的因子为:",t[i]);   
       for(k=1;k<t[i];k++)  
        if(t[i]%k==0)   
         printf("%d ",k);  
     }   
    system("pause");  
}  
      
      
      
    int swap(int n)  
     {  
       int s,i;  
       s=0;  
       for(i=1;i<n;i++)  
        {  
          if(n%i==0)  
          s=s+i;  
        }  
       int m;  
       if(n==s) m=1;  
       else m=0;  
       return(m);  
     } 

我可好玩啦...不信你玩玩^_^
2009-10-25 13:20
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:1 
我也试试
2009-10-25 13:41
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:1 
这个程序代码应该适合你的那个
PERFECT.rar (730 Bytes)
2009-10-25 13:41
q601510717
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-22
收藏
得分:0 
回复 7楼 pgy
谢谢
2009-10-25 13:56
快速回复:编程找出1000之内的全部完数,
数据加载中...
 
   



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

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