Python与C语言分别解决完全平方数问题

完全平方数指用一个整数乘以自己例如1*1.2*2.3*3等依次类推,若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。完全平方数是非负数,而一个完全平方数的项有俩个,让我们用程序来练习一下

1 案例

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

2 分析

由题意我们可以设该数为x ,加100后得到的完全平方数为y^{2}再加168后得到的完全平方数为z^{2}

则:

得:

可以利用的条件: 

3 Python实现

(1)方法一:

假设这个数字是:x
条件一:x+100是一个完全平方数
条件二:x+100+168也是一个完全平方数

import math for i in range(-100,2000): if (int(math.sqrt(i+100)))**2 == i+100: if int(math.sqrt(i+268))**2 == i+268: print(i,end=' ')

#================结果================

-99 21 261 1581
Process finished with exit code 0

(2)方法二 

其实可以采用逆向思维:我们可以分别假设:

(1)x+100开平方后的数字是:a

(2)x+100+168开平方后后的数字是:b
那么的话就存在如此关系:

1):b^{2}-a^{2}=168

2):a^{2}-100=x

for i in range(0,100): for j in range(0,100): if i**2 - j**2 == 168: print("数字是:{} ;i = {} ;j = {}".format(j**2 - 100,i,j))

#====================结果========================

数字是:-99 ;i = 13 ;j = 1
数字是:21 ;i = 17 ;j = 11
数字是:261 ;i = 23 ;j = 19
数字是:1581 ;i = 43 ;j = 41

Process finished with exit code 0

4 C语言实现

#include "stdio.h" #include "math.h" int main(void) { int x = -100; double y = 0, z = 0; do { y = sqrt(x + 100); z = sqrt(x + 100 + 168); if (y == (int)y && z == (int)z) printf("%d\n", x); x++; } while ((z + y) > 0 && (z + y) <= 168); return 0; }

到此这篇关于Python与C语言分别解决完全平方数问题的文章就介绍到这了,更多相关Python 完全平方数内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是Python与C语言分别解决完全平方数问题的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » python