当前位置:首页 » 编程语言 » c语言亲密数

c语言亲密数

发布时间: 2022-10-02 09:34:10

c语言 寻找亲密数对(编程题)

#include<stdio.h>
intcalcsum(intn)
{
inti,sum=0;
for(i=1;i<=n/2;i++)
{
if(n%i==0)
{
sum+=i;
}
}
returnsum;
}
intmain()
{
intlBound,uBound;
inti,j;
printf("请输入lBound和uBound:");
scanf("%d%d",&lBound,&uBound);
for(i=lBound;i<=uBound;i++)
{
for(j=i+1;j<=uBound;j++)
{
if(calcsum(i)==j&&calcsum(j)==i)
printf("%d<->%d ",i,j);
}
}
return0;
}

❷ 【C语言训练】亲密数

#include<stdio.h>
#define N 3000Yzh();
void main()
{
/*int a; scanf("%d",&a); printf("%d",Yzh(a));*/
int a,b,i,j;
for(i=2;i<N;i++)
{
a = Yzh(i);
for(j=2;j<N;j++)
{
b = Yzh(j);
if(a==j && b==i && i<j) //因为要小的数在前面所以应该是小于
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语言 求亲密数 问题。大神请进!

while(i<a)
{
i=i+1;

这样当i=a-1时,会进入循环,然后i加1,变成了a,并参与了运算,因此会得出错误结果。

将以上代码改为:(注意,第二个也要改)

while(++i<a)
{
//i=i+1;

应该就正确了。

❹ C语言求亲密数 函数方法

#include<stdio.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;a<500;a++) /*穷举500以内的全部整数*/
{
n=facsum(n,&a,&b);
if(n==a&&a<=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语言编程 高手进 关于亲密数

#include
<stdio.h>
#include
<conio.h>
int
facsum(int
n)
{
int
sum=0;
for
(int
i=1;i<n;i++)
{
if(n%i==0)
sum+=i;
}
return
sum;
}
main()
{
for
(int
i=1;i<=500;i++)
{
int
M1=facsum(i);
if
(facsum(M1)==i&&i<=M1)
{
printf("%d和%d互为亲密数\n",i,M1);
}
}
}
可以吗?输出要有文字说明,你可以自己改printf("%d和%d互为亲密数\n",i,M1);这句话就行了。

❻ c语言 求出亲密数对

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

用除号是不行的,呵呵。

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

求因子和的函数如下:

intsumf(intnum)
{
inti,sum=0;
for(i=1;i<=num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
returnsum;
}

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


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

#include<stdio.h>
#include<stdlib.h>
intmain(void)
{inti;
for(i=2;i<1000;i++)
{
//printf("%d--%d--%d ",i,sumf(i),sumf(sumf(i)));
if(i==sumf(sumf(i)))
{
printf("%d%d ",i,sumf(i));
}
}
system("pause");
return0;
}

intsumf(intnum)
{
inti,sum=0;
for(i=2;i<num;i++)
{
if(num%i==0)
{
sum+=i;
}
}
returnsum;
}

❼ 如何用C语言编写2——1000之内的亲密数对

亲密数对:两正整数a、b,若a的所有包含1但不包含自身的因子和等于b,b的所有包含1但不包含自身的因子和又等于a,则称a、b为一对亲密数或一亲密数对。
具体代码如下:
#include
int
fun(int
n)
{
int
i,sum;
sum=1;
for(i=2;i<=n/2;i++)
if
(n%i==0)
sum+=i;
return
sum;
}void
main()
{
int
a,b,c;
for
(a=2;a<=1000;a++)
{
b=fun(a);
c=fun(b);
if
(c==a)
printf("%5d%5d\n",a,b);
}
}

❽ c语言求亲密对数

#include<stdio.h>

int main()

{

int factor(int x),a,b,i;

for(a=1;a<=2000;a++)

{

b=factor(a);

if(b>a&&factor(b)==a)

printf("%d<-->%d ",a,b);

}

return 0;

}

int factor(int x)

{

int i,sum=0;

for(i=1;i<=x/2;i++)

if(x%i==0)

sum=sum+i;

return (sum);

}

❾ 如何用C语言编写2——1000之内的亲密数对

亲密数对:两正整数a、b,若a的所有包含1但不包含自身的因子和等于b,b的所有包含1但不包含自身的因子和又等于a,则称a、b为一对亲密数或一亲密数对。 具体代码如下: #include <stdio.h>int fun(int n)
{
int i,sum;
sum=1;
for(i=2;i<=n/2;i++)
if (n%i==0) sum+=i;
return sum;
}void main()
{
int a,b,c;
for (a=2;a<=1000;a++)
{
b=fun(a);
c=fun(b);
if (c==a)
printf("%5d%5d\n",a,b);
}
}

热点内容
坦洲邮政局可以解压吗 发布:2024-05-03 20:09:55 浏览:731
二级程序编译答案 发布:2024-05-03 18:41:35 浏览:653
领动自动精英版是哪个配置 发布:2024-05-03 18:37:30 浏览:150
java编译器中cd什么意思 发布:2024-05-03 18:36:00 浏览:389
传奇服务器如何刷钱 发布:2024-05-03 18:36:00 浏览:977
安卓版twitter怎么注册 发布:2024-05-03 18:28:05 浏览:893
Python逻辑优先级 发布:2024-05-03 18:26:14 浏览:267
linux查看svn密码 发布:2024-05-03 18:12:47 浏览:804
地铁逃生怎么进入游戏安卓 发布:2024-05-03 17:49:35 浏览:992
aws云存储 发布:2024-05-03 17:48:50 浏览:955