在不使用浮點函式sqrt的情況下,我們有一些比較好的演算法:
1.利用恒等式: 1+3+5+7+....+(2*n-1)=n^2
bool
issqrt(
intn)
複製**
下面是一些關於完全平方數的數學性質:
對排除完全平方數有一定的加速作用:
性質1:完全平方數的末位數只能是0,1,4,5,6,9。
性質2:奇數的平方的個位數字為奇數,十位數字為偶數。
證明 奇數必為下列五種形式之一:
10a+1, 10a+3, 10a+5, 10a+7, 10a+9
分別平方後,得
(10a+1)^2=100+20a+1=20a(5a+1)+1
(10a+3)^2=100+60a+9=20a(5a+3)+9
(10a+5)^2=100+100a+25=20 (5a+5a+1)+5
(10a+7)^2=100+140a+49=20 (5a+7a+2)+9
(10a+9)^2=100+180a+81=20 (5a+9a+4)+1
綜上各種情形可知:奇數的平方,個位數字為奇數1,5,9;十位數字為偶數。
性質3:如果完全平方數的十位數字是奇數,則它的個位數字一定是6;反之,如果完全平方數的個位數字是6,則它的十位數字一定是奇數。
證明 已知=10k+6,證明k為奇數。因為的個位數為6,所以m的個位數為4或6,於是可設m=10n+4或10n+6。則
10k+6=(10n+4)=100+(8n+1)x10+6
或 10k+6=(10n+6)=100+(12n+3)x10+6
即 k=10+8n+1=2(5+4n)+1
或 k=10+12n+3=2(5+6n)+3
∴ k為奇數。
推論1:如果乙個數的十位數字是奇數,而個位數字不是6,那麼這個數一定不是完全平方數。
推論2:如果乙個完全平方數的個位數字不是6,則它的十位數字是偶數。
性質4:偶數的平方是4的倍數;奇數的平方是4的倍數加1。
這是因為 (2k+1)=4k(k+1)+1
(2k)=4
性質5:奇數的平方是8n+1型;偶數的平方為8n或8n+4型。
在性質4的證明中,由k(k+1)一定為偶數可得到(2k+1)是8n+1型的數;由為奇數或偶數可得(2k)為8n型或8n+4型的數。
性質6:平方數的形式必為下列兩種之一:3k,3k+1。
因為自然數被3除按餘數的不同可以分為三類:3m,3m+1, 3m+2。平方後,分別得
(3m)=9=3k
(3m+1)=9+6m+1=3k+1
(3m+2)=9+12m+4=3k+1
同理可以得到:
性質7:不能被5整除的數的平方為5k±1型,能被5整除的數的平方為5k型。
性質8:平方數的形式具有下列形式之一:16m,16m+1, 16m+4,16m+9。
除了上面關於個位數,十位數和餘數的性質之外,還可研究完全平方數各位數字之和。例如,256它的各位數字相加為2+5+6=13,13叫做256的各位 數字和。如果再把13的各位數字相加:1+3=4,4也可以叫做256的各位數字的和。下面我們提到的乙個數的各位數字之和是指把它的各位數字相加,如果 得到的數字之和不是一位數,就把所得的數字再相加,直到成為一位數為止。我們可以得到下面的命題:
乙個數的數字和等於這個數被9除的餘數。
下面以四位數為例來說明這個命題。
設四位數為,則
= 1000a+100b+10c+d
= 999a+99b+9c+(a+b+c+d)
= 9(111a+11b+c)+(a+b+c+d)
顯然,a+b+c+d是四位數被9除的餘數。
對於n位數,也可以仿此法予以證明。
關於完全平方數的數字和有下面的性質:
性質9:完全平方數的數字之和只能是0,1,4,7,9。
證明 因為乙個整數被9除只能是9k,9k±1, 9k±2, 9k±3, 9k±4這幾種形式,而
(9k)=9(9)+0
(9k±1)=9(9±2k)+1
(9k±2)=9(9±4k)+4
(9k±3)=9(9±6k)+9
(9k±4)=9(9±8k+1)+7
除了以上幾條性質以外,還有下列重要性質:
性質10:為完全平方數的充要條件是b為完全平方數。
證明 充分性:設b為平方數,則
==(ac)
必要性:若為完全平方數,=,則
性質11:如果質數p能整除a,但p的平方不能整除a,則a不是完全平方數。
證明 由題設可知,a有質因數p,但無因數,可知a分解成標準式時,p的次方為1,而完全平方數分解成標準式時,各質因數的次方均為偶數,可見a不是完全平方數。
性質12:在兩個相鄰的整數的平方數之間的所有整數都不是完全平方數,即若
n^2 < k^2 < (n+1)^2
則k一定不是完全平方數。
性質13:乙個正整數n是完全平方數的充分必要條件是n有奇數個因數(包括1和n本身)。
如何判斷乙個數是不是乙個完全平方數?
在不使用浮點函式sqrt的情況下,我們有一些比較好的演算法 1.利用恒等式 1 3 5 7 2 n 1 n 2 bool issqrt intn 下面是一些關於完全平方數的數學性質 對排除完全平方數有一定的加速作用 性質1 完全平方數的末位數只能是0,1,4,5,6,9。性質2 奇數的平方的個位數字...
如何判斷乙個數是不是完全平方數
在不使用浮點函式sqrt的情況下,我們有一些比較好的演算法 1.利用恒等式 1 3 5 7 2 n 1 n 2 bool issqrt intn 下面是一些關於完全平方數的數學性質 對排除完全平方數有一定的加速作用 性質1 完全平方數的末位數只能是0,1,4,5,6,9。性質2 奇數的平方的個位數字...
編寫乙個演算法判斷乙個數是不是「快樂數」。
乙個 快樂數 的定義為 對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為1,也可能是無限迴圈但始終變不到1.如果可以變為1,那麼這個數就是快樂數。例項 輸入 19 輸出 true 解釋 1 2 9 2 82 8 2 2 2 68 6 2 8 2 100 1...