亲和数c语言
㈠ c语言初学 求解
m=(t=i++)+(f=i++)+(g=i++),假如i初值为3,那么第二个等号前的t值为3,经过第二个等号后的i++之后,第三个等号后的i=4,所以第三个等号前的f=4,同理在经过第三个等号i++之后,最后一个等号的i=5,所以g=5,结果为3+4+5
㈡ 帮忙纠错,初学c语言,希望今天得到答案,谢谢
你的这个程序是求亲和数的,整体上的思路是对的,只是忘了一点,sum1和sum2,在每次循环前都要重新赋值为1。否则是得不到任何的亲和数。
我改了一下,用的是1200,6000时间运行长了。
#include "iostream.h"
#include "iomanip.h"
void main ()
{
int x,m,sum1=1,sum2=1,y,n;
cout<<"The friendly-numbers pair: "<<endl;
for (x=2;x<=1220;x++)
{
sum1=1;
for (m=2;m<=x/2;m++)
if (x%m==0)
sum1=sum1+m;
for (y=x+1;y<=1220;y++)
{
sum2=1;
for (n=2;n<=y/2;n++)
if (y%n==0)
sum2=sum2+n;
if (x==sum2 && y==sum1)
cout<<setw(5)<<x<<"--"<<y<<endl;
}
}
}
而且我把求x的真因素提到了外面,可以节省些时间,不必每次求一次x的真因素,再求y的真因素。
结果:
220——284
1184——1210
㈢ C语言5道题,求源代码。
//写一个给你作参考吧,其他的都差不多,还是要自己动手才会有进步哈
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intM;
scanf("%d",&M);
while(M--)
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a||a-b>=c||a-c>=b||b-c>=a)
{
printf("NO ");
}
else
{
printf("YES ");
}
}
return0;
}
㈣ c语言编程亲和数,能运行,但是结果不对,麻烦看一下哪里错了,谢谢
#include <stdio.h>
void main()
{
int n,m,sum,com;
printf("这是1000以内的亲和数:\n");
for (m=0;m<10000;m++)
{
sum=0;
com=0;
for (n=m-1;n>=1;n--) //m=220 n>=1
{
if (m%n==0) //能整除
{
sum+= n; //sum=284 直接相加,不用除
}
}
for (n=sum-1;n>=1;n--) // n>=1
{
if (sum%n==0) //能整除
{
com+=n; //com=220 直接相加,不用除
}
}
if (com==m)
{
if (m<sum)
{
printf("%d与%d是亲和数\n",m,sum);
}
}
}
}
㈤ 用C语言实现求出范围内的亲和数
//c语法
#include
#include
int
main(int
argc,char
*argv[])
{
long
num1,num2,min,max;
srand(time(null));
printf("请指定范围:");
scanf("%ld
%ld",&min,&max);
while(1)
{
num1=rand()%(max+1)+min;
num2=rand()%(max+1)+min;
if(0==num1%2
&&
1==num2%2)
{
break;
}
}
printf("%ld*%ld=%ld",num1,num2,num1*num2);
system("pause");
return
0;
}
//c#语法
using
system;
namespace
t
{
class
program
{
public
static
void
main(string[]
args)
{
int
num1,num2,min,max;
random
r=new
random(datetime.now.millisecond);
console.writeline("请指定范围,每行一个:");
try
{
min=convert.toint32(console.readline());
max=convert.toint32(console.readline());
while(true)
{
num1=r.next(min,max+1);
num2=r.next(min,max+1);
if(0==num1%2
&&
1==num2%2)
{
break;
}
}
console.writeline("{0}*{1}={2}",num1,num2,num1*num2);
}
catch(exception
)
{
}
console.write("按任意键退出。");
console.readkey(true);
}
}
}
㈥ 一道C语言题目 亲和数
题目错了吧,200-1200之间只有一对,就是(220,284).
因为你题目说了,x<y,所以(284,220)不算,(496,496)也不算
#include<stdio.h>
void main()
{
long A,B;
scanf("%d%d",&A,&B);
int count=0;//统计结果
int x,i;//循环变量
for(x=A;x<B;x++)
{
long s1=0;
for(i=1;i<=x/2;i++)
if(x%i==0)
s1+=i;
if(s1>x && s1<=B)
{
long s2=0;
for(i=1;i<=s1/2;i++)
if(s1%i==0)
s2+=i;
if(s2==x)
count++;
}
}
printf("%d\n",count);
}
㈦ 亲和数C语言..
#include<stdio.h>int main(){int a,i,b,n,y,z;printf("There are following friendly–numbers pair smaller than3000:\n");for(a=1;a<3000;a++) /*穷举3000以内的全部整数*/{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<b)printf("%4d..%4d\n ",a,b); /*若n=a,则a和b是一对亲密数,输出*/} printf("请输入两个数\n"); scanf ("%d %d",&y,&z); 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<b) if((a==z&&b==y)||(b==z&&a==y)) { printf("%4d %4d 是亲密数\n",a,b); /*若 n=a,则 a 和 b 是一对亲密数,输出*/ break; } if(a==9999) printf("%d,%d不是亲密数\n",y,z); }}
㈧ 怎么用c语言寻找三阶亲和数
若干个正整数,其中第一个数的除本身之外全部约数的和,等于第二个数;第二个数的除本身之外全部约数的和,等于第三个数;……最后一个数的除本身之外全部约数的和,等于第一个数。这些自然数形成一个有趣的链环状,称之为相亲数链,又称之为亲和数链、交际数。相亲数可视为二环亲和数链,完美数是一环亲和数链。
12496、14288、15472、14536、14264组成五环相亲数链。
目前已发现一个二十八环的相亲数链,及14316 - 19116 - 31704 - 47616 - 83328 - 177792 - 295488 - 629072 - 589786 - 294896 - 358336- 418904 - 366556 - 274924 - 275444 - 243760 - 376736 - 318028 - 285778 - 152990 - 122410 - 97946 - 48976 - 45946 - 22976 - 22744 - 19916 - 17716
在相亲数的基础上,根据指定的n求n环相亲数链,设置数组s:s(0)即为循环中选取的整数i(预置范围是11~2000000),其真因数之和存储到s(1)。一般地,通过k循环实现把s(i-1)的真因数之和存储到 s(i)(k:1-n)。
判别:若s(n)<>s(0),则测试下一个i,直至s(n)==s(0)时,找到相亲数链的n个环数。按规格作打印输出。
程序代码如下:
/*求n环相亲数链*/
程序运行结果如下:
#include<stdio.h>
#include<math.h>
voidmain()
{
intc,k,n;
longi,j,t,s[100];
printf("“n寻求n环相亲数链。请输入n:");
scanf("%d",&n);
for(i=11;i<=2000000;i++)
{
s[0]=i;
for(c=0,k=1;k<=n;k++)
{
s[k]=1;t=sqrt(s[k-1]);
for(j=2;j<=t;j++)if(s[k-1]%j==0)s[k]=s[k]+j+s[k-1]/j;
if(s[k-1]==t*t)s[k]-=t;
for(j=0;j<=k-1;j++)if(s[k]==s[j]){c=1;break;}
if(c==1)break;}
if(s[0]==s[n])
{
printf("“n%d环相亲数链:“n",n);
for(k=0;k<=n-1;k++)
{
printf("“n%ld:%d",s[k],1);
for(j=2;j<=s[k]/2;j++)
if(s[k]%j==0)printf("+%d",j);
printf("=%ld",s[k+1]);}
break;}
}
printf("“n");
}
㈨ c语言编程求大佬
#include<stdio.h>
int k;
int sumOfFactor(int n)
{ int i,s=1;
for(i=2; i*i<n; i++)
if(n%i==0)s+=i+n/i;
if(i*i==n)s+=i;
return s;
}
int friendNum(int n)
{ k=sumOfFactor(n);
return k==sumOfFactor(n)&&n==sumOfFactor(k);
}
int main()
{ int n;
scanf("%d",&n);
if(friendNum(n))
printf("Find the friendly number of %d is %d. ",n,k);
else
printf("There is no friendly number of %d. ",n);
return 0;
}
㈩ 亲和数 c语言
首先,我们先搞清概念,亲和数指的是两个数的除去自身以外的约数。。
6除去自身以外的约数是什么呢:123
对于程序,我想说,你晕过头了!!
错误出现在最后的ifelse判断,我们需要判断的是:
数组a所有元素的和是284
数组b所有元素的和是220
而不是判断这两个数组所有元素和相等!!
所以最后的ifelse就随你怎么改了:
if(sum1==284&&sum2==220)printf("R ");//if(sum1==y&&sum2==x)printf("R ");
elseprintf("W ");