| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:c语言小问题
只看楼主 加入收藏
弶儁
Rank: 2
来 自:安徽宣城
等 级:论坛游民
帖 子:16
专家分:23
注 册:2013-5-2
结帖率:28.57%
收藏
已结贴  问题点数:20 回复次数:6 
c语言小问题
【程序功能】
求3000以内的亲密数对.
如果A的全部真因子(包括1,不包括A自身)之和等于B;B的全部真因子之和等于A,则称整数A和B为一对亲密数。
【编程要求】
1.    编写函数int frinum(long s[][2],long n)实现如下功能:找到2~n分范围内的所有亲密数对,将这些亲密数对保存到s指向的二维数组中。返回函数s数组中存储的亲密数对的对数。
2.    编写函数main 实现以下功能:声明二维数组s和变量n,输入一个正整数并保存到n中,用二维数组s和变量n作为实参调用frinum函数,将n以内的所有的亲密数对输出到屏幕。
【测试数据与运行结果】
输入: n=3000
输出:
      (220,284)
      (1184,1210)
      (2620,2924)
#include<stdio.h>
int frinum(long s[][2],long n)
{
   long a,b,sum1=0,sum2=0,k=0,i,j;
   for(a=2;a<=n;a++)
    {  for(i=1;i<a;i++)
          if(a%i==0)  sum1+=i;
       for(b=2;b<=n;b++)
       {for(j=1;j<b;j++)
         if(b%j==0)   sum2+=j;
           if(a!=b&&sum1==sum2)  
         {
             s[k][0]=a;
             s[k][1]=b;
                k++;
         }     
          sum2=0;
       }
       sum1=0;
    }
return  (k);
}
main()
{
    long s[1000][2],n;
    int i,k;
    printf("Input n=");
    scanf("%ld",&n);
    k=frinum(s,n);
    for(i=0;i<k;i++)
        printf("(%ld,%ld)\n",s[i][0],s[i][1]);
}
搜索更多相关主题的帖子: 函数 正整数 
2013-06-03 18:07
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
你的问题是?

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-06-04 07:00
弶儁
Rank: 2
来 自:安徽宣城
等 级:论坛游民
帖 子:16
专家分:23
注 册:2013-5-2
收藏
得分:0 
回复 2楼 pauljames
运行半天半,而且每结果。本来当输入3000时应该出现的结果没出现
2013-06-04 12:11
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
#include<stdio.h>
long s[1000][2],n;
int frinum(long s[][2],long n)
{
    long a,sum1=0,sum2=0,k=0,i,j;
    for(a=2;a<=n;a++)
    {  
        for(i=1;i<a;i++)
        {
            if(a%i==0)  sum1+=i;
        }
        for(j=1;j<sum1;j++)
        {
            if(sum1%j==0)  sum2+=j;
        }
        if((sum1!=a)&&(sum2==a))
        {
            s[k][0]=a;
            s[k][1]=sum1;
            k++;
        }
        sum1=0;
        sum2=0;
    }
    return  (k);
}
main()
{
    int i,k;
    printf("Input n=");
    scanf("%ld",&n);
    k=frinum(s,n);
    for(i=0;i<k;i++)
        printf("(%ld,%ld)\n",s[i][0],s[i][1]);
}
2013-06-07 10:43
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-06-07 10:43
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
要把存储的数组定义成全局变量。不然函调用结束后,修改无法修改到那些非全局变量
或者你用指针,也可以修改到原来传入变量的值
2013-06-07 10:53
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:10 
刚刚忘了,main函数前再加一下void ,不然会有警告
2013-06-07 10:57
快速回复:c语言小问题
数据加载中...
 
   



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

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