亲密数c语言程序用函数 3000以内亲密数c语言

c语言 求出亲密数对

大概看了一下,你判断是否为因子的地方有问题,应该用取余运算符号:%

成都创新互联公司专注于内丘网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供内丘营销型网站建设,内丘网站制作、内丘网页设计、内丘网站官网定制、重庆小程序开发服务,打造内丘网络公司原创品牌,更为您提供内丘网站排名全网营销落地服务。

用除号是不行的,呵呵。

另外,你把求一个数的因子和,写成一个函数,这样的话,程序看起来更明了,你也不容易混乱。

求因子和的函数如下:

int sumf(int num)

{

int i,sum = 0;

for(i = 1;i = num; i ++)

{

if(num % i == 0)

{

sum += i; 

}   

}

return sum;

}

不过你所说的因子是否包含了1和数本身?如果包含的话,我运行了一下,2到1000好像没发现有满足条件的。

如果不包含1和本身,倒是有几个,全程序是这样:

#include stdio.h

#include stdlib.h

int main(void)

{   int i; 

for(i = 2; i  1000; i++)

{      

//printf("%d--%d--%d\n",i,sumf(i),sumf(sumf(i)));

if(i == sumf(sumf(i)))

{

printf("%d    %d\n",i,sumf(i));

}    

system("pause");

return 0;

}

int sumf(int num)

{

int i,sum = 0;

for(i = 2;i  num; i ++)

{

if(num % i == 0)

{

sum += i; 

}   

}

return sum;

}

【C语言训练】亲密数

#includestdio.h

#define N 3000Yzh();

void main()

{

/*int a; scanf("%d",a); printf("%d",Yzh(a));*/

int a,b,i,j;

for(i=2;iN;i++)

{

a = Yzh(i);

for(j=2;jN;j++)

{

b = Yzh(j);

if(a==j b==i ij) //因为要小的数在前面所以应该是小于

printf("(%d,%d)",i,j);

}

}

}

int Yzh(int x)

{

int n,sum=0;

for(n=1;n=x/2;n++)

{

if(x%n==0)

sum+=n;

}

return sum;//因为你在主函数中会用到因子的和这个值,所以你必须要把调用函数的值返回给主函数

}

这是我修改的你的代码,输出符合你的要求,不过3000以内的亲密数好像只有3对

C语言编程 高手进 关于亲密数

#include

stdio.h

#include

conio.h

int

facsum(int

n)

{

int

sum=0;

for

(int

i=1;in;i++)

{

if(n%i==0)

sum+=i;

}

return

sum;

}

main()

{

for

(int

i=1;i=500;i++)

{

int

M1=facsum(i);

if

(facsum(M1)==ii=M1)

{

printf("%d和%d互为亲密数\n",i,M1);

}

}

}

可以吗?输出要有文字说明,你可以自己改printf("%d和%d互为亲密数\n",i,M1);这句话就行了。

C语言求亲密数 函数方法

#includestdio.h

int main()

{

int a,b,n;

int facsum(int n,int *a,int *b);

printf("There are following friendly--numbers pair smaller than 500:\n");

for(a=1;a500;a++) /*穷举500以内的全部整数*/

{

n=facsum(n,a,b);

if(n==aa=b)

printf("%4dand%d\n",a,b); /*若n=a,则a和b是一对亲密数,输出*/

}

}

int facsum(int n,int *a,int *b)

{

int i;

for(*b=0,i=1;i=*a/2;i++) /*计算数a的各因子,各因子之和存放于b*/

if(!(*a%i))

*b+=i; /*计算b的各因子,各因子之和存于n*/

for(n=0,i=1;i=*b/2;i++)

if(!(*b%i))

n+=i;

return n;

}

呵呵,楼主,你还是多看看函数的用法吧,先理清逻辑。

大学c语言求亲密数。程序如下,为什么打印出来的是从1到100000。望大佬指教。

看了你的问题我去看的亲密数:

亲密数是成对的,两者互为亲密数。

你的程序错误:

int QMS(n)

{

int n; 这两句,QMS的参数为n,n居然没有类型?既然参数传进了变量n,为什么下面又定义了一个局部变量 int n?

修改此句如下: int QWS(int n)删除函数内的int n;这句。

程序如下(百度百科的例子)

#includestdio.h

int main()

{

int a,i,b,n;

printf("There are following friendly--numbers pair smaller than 3000:\n");

for(a=1;a3000;a++) /*穷举3000以内的全部整数*/

{

for(b=0,i=1;i=a/2;i++) {

if(!(a%i))b+=i;

for(n=0,i=1;i=b/2;i++){

if(!(b%i))n+=i;

if(n==aab)

printf("%4d..%4d ",a,b);

}

}

}

*运行结果

There are following friendly--numbers pair smaller than 3000:

220.. 284 1184.. 1210 2620.. 2924


分享名称:亲密数c语言程序用函数 3000以内亲密数c语言
分享地址:http://hbruida.cn/article/docgiie.html