Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2502230
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-05-04 17:31:31

    正整数n若是它平方数的尾数,则称n为同构数。例如:6是平方数为36的尾数,76是其平方数5776的尾数,因此6,76都是同构数,编写一个程序,找出1000以内的同构数。
    我们可以通过穷举法,在1-1000中进行搜索。然后一个问题就是求余的问题,当进行判断的数为1一位的时候,我们可以很容易的进行判断,然后是2,3为数的时候,我们需要对其为100,1000求余。然后判断值是否相等,即可判断,该数是否为同构数。代码如下:
  1. #include <stdio.h>

  2. int func(int n)
  3. {
  4.   int j;
  5.   for(j=10; j<1000; j=j*10){
  6.     if(n/j == 0)
  7.       break;
  8.   }

  9.   if((n*n)%j == n)
  10.     return 1;
  11.   else
  12.     return 0;
  13. }


  14. void gettongguo()
  15. {
  16.   int i;
  17.   for(i=1; i<=1000; i++)
  18.     if(func(i))
  19.       printf("%d ",i);
  20. }

  21. int main(int argc, char *argv[])
  22. {
  23.   printf("the tongguoshu bellow 1000 are\n");
  24.   gettongguo();
  25.   printf("\n");

  26.   return 0;
  27. }
对程序进行编译,执行:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ gcc 6.7.c
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
the tongguoshu bellow 1000 are
1 5 6 25 76 376 625

阅读(5263) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~