题目:一个整数,它加上 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又是一个完全平方数"); } } } } }
经典算法-完全平方数