Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198376
  • 博文数量: 264
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 2740
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 13:25
文章分类

全部博文(264)

文章存档

2011年(1)

2009年(263)

我的朋友

分类: C/C++

2009-06-09 13:30:59

★最大公约数和最小公倍数

  用穷举法求最大公约数iloop的思路:

  1、穷举的范围是1到两个整数中的最小数;

  2、可能的解是两个数分别除以iloop时都能整除,余数为0的那个iloop.

  而最小公倍数等于两个数的积除以最大公约数。

 #include
int max(int first,int second);
int min(int first,int second);
void main()
{
   int n1=0,n2=0,imax=0,imin=0;
   printf("please input two number:\n");
   scanf("%d%d",&n1,&n2);
   imax=max(n1,n2);
   imin=min(n1,n2);
   printf("max number is: %d\n",imax);
   printf("min number is: %d\n",imin);
}
int max(int first,int second)
{
   int itmp=0,iloop=1;
   if(first>second)
   {
   itmp=first;
   first=second;
   second=itmp;
   }
   while(iloop<=first)
   {
  if(((first%iloop)==0)&&((second%iloop)==0))
  itmp=iloop;
  iloop=iloop+1;
   }
   return itmp;
}
int min(int first,int second)
{
   int itmp=0;
   itmp=first*second/max(first,second);
   return itmp;
}

  ★数字分解算法

  试想想十进制数123,要怎样才能分解出1、2和3呢?

  个位3当然是:123%10=3;十位2有点难度,不过想想就出来啦:12%10=2嘛,那12怎么来呢?123/10就等于12了嘛~~~至于1,用123除以100就出来啦~程序如下:

 #include
void main()
{
  int no=0,itmp=0;
  scanf("%d",&no);
  while(no>0)
  {
     itmp=no%10;
     printf("%d\n",itmp);
     no=no/10;
  }
}

  ★水仙花数

  所谓水仙花数,是指一个3位的十进制数,该数各位数字的立方和等于该数本身。例如153是一个水仙花数,因为13+53+33=153.100到1000里当然还有几个水仙数,我们就交给电脑算吧~

#include
void main()
{
   int ge=0,shi=0,bai=0,itmp=0,ino=0;
   for(ino=100;ino<1000;ino++)
   {
      ge=ino%10;
      shi=(ino/10)%10;
      bai=(ino/100)%10;
      itmp=ge*ge*ge+shi*shi*shi+bai*bai*bai;
      if(itmp==ino)
      printf("no is: %d\n",ino);
   }
}
阅读(297) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~