1 10000以内的所有亲密数C语言,c10000_c语言 输出10000以内的亲密数。

c语言 输出10000以内的亲密数。

*问题分析与算法设计

按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。计算数a的各因子的算法:

用a依次对i(i=1~a/2)进行模运算,若模运算结果等于0,则i为a的一个因子;否则i就不是a的因子。

*程序说明与注释

#include

int main()

{

int a,i,b,n;

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

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

{

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;

if(n==a&&a

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

}

}

*运行结果

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

220.. 284

1184.. 1210

2620.. 2924

5020.. 5564

6232.. 6368

c语言10000以内完数的个数

完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。

1000以内所有完数

C语言代码:

#include

/**CopyRight@fantasy0707*/

#define N 1000 //完数求解范围

main()

{

int i,j,sum; //sum用来存放因子之和

for(i=1;i

{

sum=0; //给sum赋值,同时也是对上一次的值清空

for(j=1;j<=i/2;j++) //查找因子

{

if(i%j==0) // 如果是因子

{

sum+=j; //把当前的因子累加到sum中

}

}

if(sum==i) //判断是不是完数,即因子之和等于自身

{

printf("%-5d its factors are: ",i); //是完数,输出

for(j=1;j<=i/2;j++) //再次找出这个完数的因子

{

if(i%j==0) //输出各个因子

printf("%d,",j);

}

printf("\n");

}

}

}

c语言。将一个小于10000的数逆向输出

看代码:#include 

int main()

{

printf("请输入一个数:");

int num;

scanf ("%d", &num);

while (num > 0)

{

printf ("%d", num % 10); // 取 num 的最后一位输出

num /= 10; // 去掉最后一位

}

printf ("\n");

return 0;

}

编译运行:

用c语言输出10000以内的同构数

#include

#include

int main()

{

int i,n,t;

for(n=1;n<1000;n++)

{

t=n*n;

if(n<=10)

{if(t%10==n)printf("%d * %d = %d\n",n,n,t);

else continue;

}

else if(n<=100)

{if(t%100==n) printf("%d * %d = %d\n",n,n,t);

else continue;

}

else

{if(t%1000==n) printf("%d * %d = %d\n",n,n,t);

else continue;

}

}

system("pause");

return 0;

}

我用的编译器是dev,应该能行,你看看吧!

c语言10000以内完数的个数

完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。

1000以内所有完数

C语言代码:

#include

/**CopyRight@fantasy0707*/

#define N 1000 //完数求解范围

main()

{

int i,j,sum; //sum用来存放因子之和

for(i=1;i

{

sum=0; //给sum赋值,同时也是对上一次的值清空

for(j=1;j<=i/2;j++) //查找因子

{

if(i%j==0) // 如果是因子

{

sum+=j; //把当前的因子累加到sum中

}

}

if(sum==i) //判断是不是完数,即因子之和等于自身

{

printf("%-5d its factors are: ",i); //是完数,输出

for(j=1;j<=i/2;j++) //再次找出这个完数的因子

{

if(i%j==0) //输出各个因子

printf("%d,",j);

}

printf("\n");

}

}

}

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 

#include 

int main(void)

{   int i;

for(i = 2; 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 

{

if(num % i == 0)

{

sum += i;

}

}

return sum;

}

如何用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);

}

}

请用vb编写一个找出10000以内的亲密数对的小程序

需要两个函数,一个因子和计算,一个因子和输出。程序窗体放置一个文本框,设置其MultiLine为True。源程序如下:

Option Explicit

Dim I As Long, J As Long, X As Long

Private Sub Form_Load()

Me.Show

For I = 1 To 10000

DoEvents

X = Yzh(I)

If X <= 10000 And I < X Then

If Yzh(X) = I Then

Text1 = Text1 & "(" & I & "," & X & ")" & Chr(13) & Chr(10)

YzhOut (I)

YzhOut (X)

End If

End If

Next

Text1 = Text1 & "计算完成"

End Sub

Private Function Yzh(N As Long) As Long

Yzh = 0

For J = 1 To N / 2

If N Mod J = 0 Then Yzh = Yzh + J

Next

End Function

Private Function YzhOut(N As Long) As Long

Dim Yzh As Long

Text1 = Text1 & N & "=1"

Yzh = 1

For J = 2 To N / 2

If N Mod J = 0 Then

Text1 = Text1 & "+" & J

Yzh = Yzh + J

End If

Next

Text1 = Text1 & "=" & Yzh & Chr(13) & Chr(10)

End Function

程序计算结果,有5组亲密数对,程序输出是:

(220,284)

220=1+2+4+5+10+11+20+22+44+55+110=284

284=1+2+4+71+142=220

(1184,1210)

1184=1+2+4+8+16+32+37+74+148+296+592=1210

1210=1+2+5+10+11+22+55+110+121+242+605=1184

(2620,2924)

2620=1+2+4+5+10+20+131+262+524+655+1310=2924

2924=1+2+4+17+34+43+68+86+172+731+1462=2620

(5020,5564)

5020=1+2+4+5+10+20+251+502+1004+1255+2510=5564

5564=1+2+4+13+26+52+107+214+428+1391+2782=5020

(6232,6368)

6232=1+2+4+8+19+38+41+76+82+152+164+328+779+1558+3116=6368

6368=1+2+4+8+16+32+199+398+796+1592+3184=6232

计算完成

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值