C++第11周项目3(8)——阿姆斯特朗数

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目3- 有趣的数字】先阅读例题,体会处理数字的一般方法,然后自行选题进行解决,掌握这种类型程序设计的一般方法。

任务:解决下面的问题(选做一道即算完成任务)

8)阿姆斯特朗数:如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。如 407=4^3+0^3+7^3就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。

#include<iostream> #include<cmath> using namespace stdint main(){   int i,m,k,n; for(n=1;n<=1000;++n) {  //计算n的各位数的立方和m  k=n;  m=0;  while(k>0)    {     i=k%10;   m+=i*i*i;    k=k/10;    }    if(m==n)  //n和其各位数的立方和相等   {   cout<<m<<"\t";  } } cout<<endlreturn 0; }  
运行结果



9)亲密数:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数AB称为亲密数。求3000以内的全部亲密数。(提示:按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定ab是亲密数。)

#include<iostream> #include<cmath> using namespace stdint main(){   int i,a,b,n; for(a=1;a<=3000;++a) {  //计算a的所有因子的和b  b=0;  for(i=1;i<a;++i)  {   if(a%i==0)     b+=i;  }  //计算b的所有因子的和n  n=0;  for(i=1;i<b;++i)  {   if(b%i==0)     n+=i;  }    if(a==n)  //a与其因子和的因子和相等   {   cout<<"a="<<a<<", a的因子和b="<<b<<endl;  } } return 0; }  
运行结果



下面的程序修改了输出部分

#include<iostream>#include<cmath>using namespace std;int main()int i,a,b,n; for(a=1;a<=3000;++a) {  //计算a的所有因子的和b  b=0;  for(i=1;i<a;++i)  {   if(a%i==0)    b+=i;  }  //计算b的所有因子的和n  n=0;  for(i=1;i<b;++i)  {   if(b%i==0)    n+=i;  }  if(a==n)  //a与其因子和的因子和相等  {   cout<<"a="<<a<<",其因子和 1";//下面将列出a的所有因子   for(i=2;i<a;++i)   {    if(a%i==0)     cout<<"+"<<i;   }   cout<<"="<<b<<endl;   cout<<"b="<<b<<",其因子和 1";//下面将列出b的所有因子   for(i=2;i<b;++i)   {    if(b%i==0)     cout<<"+"<<i;   }   cout<<"="<<a<<endl<<endl;  } } return 0;}

运行结果更直观:



           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hgdfguj/article/details/84076931