or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
a118: 03-4-指數2^k的四個自然數平方和之所有表示法
\(2^{k} = n_0^2 + n_1^2 + n_2^2 + n_3^2\) 且 \(n_0 \leq n_1 \leq n_2 \leq n_3\)
有 \(n_0\) ~ \(n_3\) 總共 4 個數字要挑選
何時有解?
\(n_3\) 不用挑,前面挑剩的全都給它。輪到 \(n_3\) 的時候,剩下要湊的數字,剛好是某個整數的平方的話,這時候就有答案。
每個位置挑數字的下限
\(n_0 \leq n_1 \leq n_2 \leq n_3\)
所以
等等,那 \(n_0\) 呢?就找最小的正整數
1
當代表囉!每個位置挑數字的上限
對 \(n_0\) 來說:
\(2^k = remain_0 = n_0^2 + n_1^2 + n_2^2 + n_3^2 \geq n_0^2 + n_0^2 + n_0^2 + n_0^2 = 4n_0^2\)
=> \(n_0^2 \leq {remain_0 \over 4}\)
=> \(n_0 \leq \sqrt{remain_0 \over 4}\)
\(remain_0 - n_0^2 = remain_1 = n_1^2 + n_2^2 + n_3^2\)
\(n_0\) 挑了一個數字,輪 \(n_1\) 挑選的時候,還剩 \(remain_1\),此時還有 3 個數字還沒挑,\(n_1\)的最大值會發生在 \(n_1 = n_2 = n_3\) 的時候
\(remain_1 = n_1^2 + n_2^2 + n_3^2 \geq n_1^2 + n_1^2 + n_1^2 = 3n_1^2\)
=> \(n_1^2 \leq {remain_1 \over 3}\)
=> \(n_1 \leq \sqrt{remain_1 \over 3}\)
\(remain_0 - n_0^2 - n_1^2 = remain_2 = n_2^2 + n_3^2 \geq n_2^2 + n_2^2 = 2n_2^2\)
同理 \(n_2 = \sqrt{remain_2 \over 2}\)
加速
逾時了!!
原因:需要反覆計算某數的平方
解方:在程式一開始時預先將平方數建表,改用查表法
神奇的巧合
試著執行看看,好像有規律 …