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

本文提供了一种使用C++编程语言解决数学问题的方法,包括寻找1000以内的所有阿姆斯特朗数(自恋性数)和3000以内的所有亲密数对。通过计算数字的立方和及因子和来识别这些特殊的数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

               

课程首页地址:http://blog.youkuaiyun.com/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,则将整数A和B称为亲密数。求3000以内的全部亲密数。(提示:按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为b,再计算b的全部因子的累加和为n,若n等于a则可判定a和b是亲密数。)

#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.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值