转载

经典算法-完全平方数

题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问

该数是多少?

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:

Go语言程序源代码:

package main import (     "fmt"     "math" ) func main() {     i := 0     for {         x := int(math.Sqrt(float64(i + 100)))         y := int(math.Sqrt(float64(i + 268)))         if x*x == i+100 && y*y == i+268 {             fmt.Printf("这个数字是%d/n", i)             break         }         i++     } }
packagemain import(  "fmt"  "math" ) func main(){  i:=0  for{   x:=int(math.Sqrt(float64(i+100)))   y:=int(math.Sqrt(float64(i+268)))   ifx*x==i+100&&y*y==i+268{    fmt.Printf("这个数字是%d/n",i)    break   }   i++  } } 

C语言实现:

#include <stdio.h> main() {     int i, j;     int hun, ten, data;                                     /*定义变量存储分解出的百位、十位、个位*/     printf("the result is:/n");     for (i = 100; i <= 999; i++)     {         j = 10;         while (j *j <= i)         {             if (i == j *j)             {                 hun = i / 100;                          /*分解出百位上的数*/                 data = i - hun * 100;                 ten = data / 10;                        /*分解出十位上的数*/                 data = data - ten * 10;                     /*分解出个位上的数*/                 if (hun == ten || hun == data || ten == data)       /*判断分解出的三个数中是否有两个数是相等的*/                     printf("%5d", i);                       /*将符合条件的数输出*/             }             j++;         }     } }
#include <stdio.h> main() {  inti,j;  inthun,ten,data;         /*定义变量存储分解出的百位、十位、个位*/  printf("the result is:/n");  for(i=100;i<=999;i++)  {   j=10;   while(j *j<=i)   {    if(i==j *j)    {     hun=i/100;        /*分解出百位上的数*/     data=i-hun *100;     ten=data/10;      /*分解出十位上的数*/     data=data-ten *10;     /*分解出个位上的数*/     if(hun==ten||hun==data||ten==data)   /*判断分解出的三个数中是否有两个数是相等的*/      printf("%5d",i);       /*将符合条件的数输出*/    }    j++;   }  } } 

Java源代码

public class SqrtDemo {      public static void main(String[] args) {        for (long l = 1L; l < 100000; l++) {            if (Math.sqrt((long) (l + 100)) % 1 == 0) {                if (Math.sqrt((long) (l + 268)) % 1 == 0) {                    System.out.println(l + "加100是一个完全平方数,再加168又是一个完全平方数");                }            }        }      }  }
publicclassSqrtDemo{  publicstaticvoidmain(String[]args){    for(longl=1L;l<100000;l++){     if(Math.sqrt((long)(l+100))%1==0){      if(Math.sqrt((long)(l+268))%1==0){       System.out.println(l+"加100是一个完全平方数,再加168又是一个完全平方数");      }     }    }  } } 

经典算法-完全平方数

正文到此结束
Loading...