C++学习笔记-第二章习题(二)

来源:互联网 发布:python与php 编辑:程序博客网 时间:2024/06/05 06:32

//2.2-----------------------------------------------------这个比较简单是到12的阶乘和:1!+2!+3!+4!+...+12!。
int a=1,sum=0;
for(int i=1;i<=12;i++){
 a*=i;
 sum+=a;
}
 cout<<"到12的阶乘和为"<<sum<<endl;
//--------------------------------------------------------
//2.3-----------------------水仙花数:三位数且各位数字立方和等于该数本身
/*
int m;
cout<<"水仙花数为;"<<endl;
 for(int i=1;i<=9;i++){
  for(int j=0;j<=9;j++){
   for(int k=0;k<=9;k++){
    m=100*i+10*j+k;
    if(m==(i*i*i+j*j*j+k*k*k))
     cout<<m<<endl;
   }
  }
 }*/
//---------------------------153,370,371,407-----------------------------
//2.4------------------------1000以内所有的完数,一个数恰好等于它的包括1在内的所有不同因子之和(不包括他本身)-----------------------------
/*int yinzi,sum=0;
 for(int i=2;i<=1000;i++){
  sum=0;
  for(int j=1;j<=i/2;j++){//j到1/2处就可以了,再高也不会有因子了:》
   if(i%j==0) yinzi=j;
   else yinzi=0;
   sum+=yinzi;
//   cout<<sum<<" "<<yinzi<<" ";
  }
  if(sum==i)
   cout<<"1000以内的完数:"<<i<<endl;
 }*/
//----------------------------这个题开始没看懂,搜了一番,觉得这样循环次数挺多的,但也没有好办法----------------------------
//2.5-------------------------3位的素数,且对称;如101----------------------------
int sign,x;
  double sqrtm;
 for(int i=1;i<=9;i+=2){//尾数为2的为偶数,可以排除
  for(int j=0;j<=9;j++){//中间位数
   sign=1;
   x=100*i+10*j+i;
   sqrtm=sqrt(x*1.0);
//   cout<<sqrtm<<" ";
   for(int l=3;l<=sqrtm;l+=2){//是否为素数,剔出了偶数因子,和大于平方根的因子
    if(x%l==0){
     sign=0;
     break;
    }
   }
   if(sign==1){
    cout<<"3位的对称素数为"<<x<<endl;
   }
  }
 }
//-----------------------------------求素数的方法有很多种,选用一种自己容易理解的,相对简单的变了一下---------------------
//2.6-------------------------------贪吃的猴子:每天吃掉所剩桃子的一半又多一个,已知第十天只剩了1个,求原总共多少桃子?----------------------
/*int m=1;
for(int i=9;i>=1;i--){
 m=(m+1)*2;
 cout<<"第"<<i<<"天猴子有"<<m<<"个桃子,吃掉了"<<m/2+1<<"个桃子"<<endl;
}*/
//-------------------------------------------------------- 

原创粉丝点击