Python與C語言分別解決完全平方數問題

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 完全平方數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: