有个解法,不过很耗时(相当耗时)
//环境: VC6.0; 运行平台: XPSP2
#include <iostream>
using namespace std
int main()
{
int ysSum(int x)
for(int i=1i<=30000i++)
for(int j=ij<=30000j++)
{
if( ( ysSum(i)!=j ) || ( ysSum(j)!=i ))
continue
else
cout<<i<<" "<<j<<endl
}
return 0
}
int ysSum(int x)//计算一个没好数的约数和
{
int sum=0
for(int i=1i<xi++)
{
if(x%i==0) sum+=i
}
return sum
}
这个程序估计20分钟也算不完;
也有效率更好的算法:
#include <iostream>
using namespace std
int main()
{
int ysSum(int x)
int temp
for(int i=1i<=30000i++)
{
temp=ysSum(i)//计算i的约数和
if(temp>30000) //temp不能大于30000
continue
if(ysSum(temp)==i) //如果temp的约数枯闷铅和等于i,
// 则是我们要的
cout<<i<<" "<<temp<罩慎<endl
}
return 0
}
int ysSum(int x)
{
int sum=0
for(int i=1i<xi++)
{
if(x%i==0) sum+=i
}
return sum
}
例3:用早基袜σ(m)表示数m的所有因子(包括1和m在内)之...如果m<n,且σ(m)=σ(n)=m+n+1,则数对(m,n)是拟互满数。下列程序的功能是找出40--2000之间的所有陆激拟互满数,并将运算结果按图锋消3给出的格式显示在文本框Text1中。...
二:1.该程序的运行结果是 :10 9
解答:x--表示先取x的值再自减1;--y表示先减1再取用y的值。
2.该程序的运行结果是 :s=9
就是两层循环嘛,当j=1时,k从1循环到j计算下s的值;
当j=2时,k从1循环到j计算下s的值
当j=3时,k从1循环到j计算下s的值
3.该程序的运行结果是 :1,5
该程序定义p指针指向数组,
p=a表示 p指向a的首地址即a[0]
*(p+2)即a[2],因为a[2]=3,*(p+2)+=2表示自增2即5;
4.该程序的运行结果是 :18
同上题,只是p现在指向a[1]
5.该程序的运行汪饥结果是 :40
a[5],5个元素的数组,在循环中;当K=0,a[0]=10*0当K=1,a[1]=10*1
以此类推;当K=5时结束循环;所以输出a[k-1]即a[4]=40.
三:
1.√
2.Ⅹ 数据类型分:基本类型 构造类型 指针类型 空类型;
基本里包括整型,字符型,浮点型,枚举型
构造里包括数组,结构体,公用体
3.Ⅹ 从0开始
4.√
5.Ⅹ getchar函数从键盘输入缓冲区里面取一个字符作为函数结果返回
6.√
7.Ⅹ 数组中只能有一种类型;若有包含多种类型则需用结构体
8.Ⅹ 还有 charshort unsigned int long intunsigned long int
double long double 等。
9.Ⅹ 满足循环退出条件即可,也可用breakcontinue等语句
10.Ⅹ 跳出循环体.
四:
你不编了吗?在if语句后面再加上n[b]='\0'(即加个结束符)然后再添个困漏返输出语句:
for(a=0a<ba++)
printf("%d",b[a])
我也是搜胡学C不久有些地方可能有错哦!大家都互相帮助嘛^-^
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)