分解因數問題
基本思路——給定乙個數k,讓其除以所有小於等於他的數,如果可以除盡,及if(k%i==0)為真,那麼k就是他的乙個因數,那麼所得商的因數一定是k的因數所以
if
(k % i ==0)
這時候的k就是原來k/i的商 k的商的因數也是k的因數
接下來我們需要構建乙個迴圈產生所有小於等於k的數
for
(i =
1; i <= k; i++
)}
同時 我們需要通過變數j來判斷k是不是為質素 反饋給我們 當k%i==0 有且只有兩次為真 k和1時 我們判斷為質數 附上**全文
resolve()
}if(j ==2)
}
求最大公約數 老祖宗的更相減損術更相減損術的第一步就是判斷兩個數得最大公約數是否為2
我們只需要將for迴圈入口設定為**for (; i % 2 == 0&&j%2==0;)**只要要求的兩個數 i j 均可以同時整除2就可以進入迴圈 我們還要增加乙個變數m 確定除了幾次2 在後續補上
for
(; i %2==
0&&j%2==0;)
當我們輸入 i j 變數時 第二步就需要判斷 i j 誰大 為了方便 我們將i變數設定為較大變數 通過簡單的變數轉換
從本例可以看出 就是先用輸入的較大變數i減去較小變數j得到的差 然後差在和減數比較 較大的做被減數 小的做減數 直到減數和差相等
可見 迴圈的出口就是減數和差相等。
設計思路 先相減在將 減數和差的較大值附給i
for(;
;)if(b > j)
i = j;
j = b;
}
最後如果m變數大於0那麼因數就要乘以2的m倍 反之直接輸出
if
(m >0)
else
printf
("最大公約數是%d"
, j)
;
附上整個
common()
if(j > i)
a =0;
int b =0;
for(;;
)if(b > j)
i = j;
j = b;}if
(m >0)
else
printf
("最大公約數是%d"
, j)
;}
第三個功能 列印 乘法口訣表
我們需要i j 兩個變數 控制行列 第一行的終點是1,1 第二行的終點是2,2
可見 終點列變數時受行控制的 那麼內層迴圈入口就是j<=i
for
(j =
1; j <= i; j++
)
當行控制了 那麼列也就確定了 乘法口訣表一共9行 所以只需要讓i小於等於9即可
table()
printf
("\n");
}}
這裡附上 test.c
#define _crt_secure_no_warnings 1
#include
"實現.h"
intmain()
標頭檔案 實現.h
#include
#define _crt_secure_no_warnings 1
menu()
;void
chose
(int input)
;table()
;resolve()
;common()
;
實現檔案
#define _crt_secure_no_warnings 1
#include
"實現.h"
menu()
table()
printf
("\n");
}}void
chose
(int input)
}while
(input!=3)
;}resolve()
}if(j ==2)
}common()
if(j > i)
a =0;
int b =0;
for(;;
)if(b > j)
i = j;
j = b;}if
(m >0)
else
printf
("最大公約數是%d"
, j)
;}
乘法口訣表
description 還記得以前小學時的九九乘法口訣吧。現在要求你編寫程式列印出乘法口訣。不過現在的乘法口訣表跟以前稍微有點區別,我告訴你乙個數字n 1 n 9 你要給我打出相應的nn乘法口訣表。input 輸入小於10的正整數n output 輸出nxn乘法口訣表。每個乘法口訣表中的除最後乙個乘...
1 9 4 乘法口訣表
問題及 檔名稱 乘法口訣表.cpp 作 者 何小樂 完成日期 2014年 10 月 26 日 版 本 號 v1.0 問題描述 利用迴圈結構輸出乘法口訣表 輸入描述 無輸入 程式輸出 輸出乘法口訣表 include using namespace std int main cout endl retu...
輸出乘法口訣表
解題思路 用巢狀的for迴圈語句實現 這是乙個9 9的乘法口訣表 define crt secure no warnings 1 include includeint main printf n system pause 也可以實現乙個n n的乘法口訣表 define crt secure no w...