c语言求20到1000之间的亲密数程序
求20到1000之间的亲密数程序。我是个初学者,很多地方都不太会,自己编了一下,运行结果我看不懂,请问我哪里出错了,应该怎样改正呢?谢谢大家了!#include<stdi...
求20到1000之间的亲密数程序。我是个初学者,很多地方都不太会,自己编了一下,运行结果我看不懂,请问我哪里出错了,应该怎样改正呢?
谢谢大家了!
#include <stdio.h>
main(){
int a,b,i,j,s=0,k=0;
for(a=20;a<=1000;a++)
{for(i=2;i<=a;i++)
s=s+i;
b=s;
for(j=2;j<=b;j++)k=k+j;
if(k==a,a!=b)
printf("%d,%d\n\n",a,b);}
}
我知道a的因子和是b,b的因子和是a,因子不包含本身,且a不等于b。这个概念。
我怎么记得老师说,20到1000之间的亲密数有48和75这对呢?
可是我按照一楼的程序运行了以下,确实只有220和284.
已经迷糊了,我学中文的,数学已经忘的差不多了。。。
我就是按那个写的。。。不会写啊。。 展开
谢谢大家了!
#include <stdio.h>
main(){
int a,b,i,j,s=0,k=0;
for(a=20;a<=1000;a++)
{for(i=2;i<=a;i++)
s=s+i;
b=s;
for(j=2;j<=b;j++)k=k+j;
if(k==a,a!=b)
printf("%d,%d\n\n",a,b);}
}
我知道a的因子和是b,b的因子和是a,因子不包含本身,且a不等于b。这个概念。
我怎么记得老师说,20到1000之间的亲密数有48和75这对呢?
可是我按照一楼的程序运行了以下,确实只有220和284.
已经迷糊了,我学中文的,数学已经忘的差不多了。。。
我就是按那个写的。。。不会写啊。。 展开
8个回答
展开全部
#include<stdio.h>
int main()
{
int a,i,b,n;
for(a=20;a<=1000;a++) /*穷举1000以内的全部整数*/
{
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 ",a,b); /*若n=a,则a和b是一对亲密数,输出*/
}
}
int main()
{
int a,i,b,n;
for(a=20;a<=1000;a++) /*穷举1000以内的全部整数*/
{
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 ",a,b); /*若n=a,则a和b是一对亲密数,输出*/
}
}
展开全部
20到1000间的亲密数只有220和284.你没有理解亲密数的意思吧.a和b是亲密数对,a的因子和等于b,b的因子和等于a,因子不包括本身,a不等于b.算法重写吧,希望对你有帮助.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int ys(int n);
void main()
{
int i,b;
for(i=0;i<10000;i++)
{
b=ys(i);
if(i==ys(b) && i<b)
printf("%-4d with %-4d\n",i,b);
}
}
int ys(int n)
{
int i,arr[12]={0},j=0,sum=0;
for(i=1;i<n;i++)
if(n%i==0)
sum=sum+i;
return sum;
}
我自己跑过的,没问题~~
int ys(int n);
void main()
{
int i,b;
for(i=0;i<10000;i++)
{
b=ys(i);
if(i==ys(b) && i<b)
printf("%-4d with %-4d\n",i,b);
}
}
int ys(int n)
{
int i,arr[12]={0},j=0,sum=0;
for(i=1;i<n;i++)
if(n%i==0)
sum=sum+i;
return sum;
}
我自己跑过的,没问题~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照亲密数的定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若a等于n则可判定a和b是亲密数。计算a的各因子的算法:用a依次对i(i=1~a/2)进行模运算,若结果等于0,则i为a的一个因子;否则i就不是a的因子。
#include<stdio.h>
int
main()
{
int
a,
i,
b,
n;
printf("There
are
following
friendly-numbers
for
2000
to
4000\n");
for(a
=
20;
a
<1000;
a++)
//举2000到4000以内的全部整数
{
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("%d..%d",
a,
b);
//若n=a,则a和b是一对亲密数,输出
}
printf("\n");
}
#include<stdio.h>
int
main()
{
int
a,
i,
b,
n;
printf("There
are
following
friendly-numbers
for
2000
to
4000\n");
for(a
=
20;
a
<1000;
a++)
//举2000到4000以内的全部整数
{
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("%d..%d",
a,
b);
//若n=a,则a和b是一对亲密数,输出
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int
main()
{
int
a,i,b,n;
for(a=20;a<=1000;a++)
/*穷举1000以内的全部整数*/
{
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
",a,b);
/*若n=a,则a和b是一对亲密数,输出*/
}
}
int
main()
{
int
a,i,b,n;
for(a=20;a<=1000;a++)
/*穷举1000以内的全部整数*/
{
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
",a,b);
/*若n=a,则a和b是一对亲密数,输出*/
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询