課堂學習:?
情景引入:
今天我們來認識一下數學中的約數關系,上節課我們了解完倍數之后就已經對約數有了基本的概念!
我們按照是否有余數,可以把他們分成兩類
在整數除法中,如果商是整數沒有余數,我們就說被除數是除數的倍數,除數是被除數的因數(約數)。 例如,12÷2=6,我們就說12是2的倍數,2是12的約數。 說一說第一類的每個算式中,誰是誰的約數?誰是誰的倍數?
做一做
下面的4組數中,誰是誰的約數?誰是誰的倍數?
約數的特征
18的因數有:1、2、3、6、9、18 一共6個
2的倍數有:2、4、6、...、12、14、16、...
5的倍數有:5、10、15、... 所以一個整數的因數是有限的,一個整數的倍數是無限多的
同學們可以找到24 的所有約數嘛?
?繪制約數
我們希望向右畫,所以開始可以讓畫筆向右轉90° 然后轉到起始位置(-300,0) 之后可以設置寬200,長100,初始顏色白色15?
int main(){pen.rt(90).moveTo(-300,0);int chang,kuan,yanse;kuan=200,chang=100,yanse=15;return 0;
}
- ?之后我們就可以用for循環來繪制2-9 一共8個長方形,所以編號可以從2開始到9結束
- 繪制時需要將質數編號的長方形更改成紅色,所以需要在編號是質數時更改顏色變量的值,不是質數的時候要把顏色變量改回白色
- 需要注意我們繪制的時候需要先繪制實心長方形再繪制編號,否則長方形就會覆蓋編號數字
int main(){pen.rt(90).moveTo(-300,0);int chang,kuan,yanse;kuan=200,chang=100,yanse=15;for(int i=2;i<10;i++){if(i==2||i==3||i==5||i==7){yanse=1;}else{yanse=15;}pen.rr(kuan,chang,yanse);pen.text(i,0);pen.up().fd(100).down();}return 0;
}
?找因數
- 知道因數知識之后,我們可以來使用繪圖找一下整數的所有因數
- 查找之前我們來學習c++中比較重要的一個算數運算類型:取余 %
- 取余操作,按字面意思來說就是獲取到表達式的余數,即: 20%3 就是20÷3=6...2 的余數,即2 20%4 就是20÷4=5...0的余數,即0
- 余數定義
- 二元運算符 % 生成第一個操作數除以第二個操作數(在通常的算術轉換之后)的余數。
- 余數的符號定義如下: 如果商 a/b 在結果類型中可表示,則 (a/b)*b + a%b == a. 如果第二個操作數為零,則行為未定義。
- 注意:余數運算符不適用于浮點類型,庫函數 fmod 提供了該功能?
課堂練習?
知道取余運算之后我們就可以使用因數的定義來找到一個整數的所有因數了
- 在商是整數沒有余數的情況下,除數就是被除數的因數,所以我們可以使用取余運算來判斷一個數是否是另一個整數的因數,
- 例如: 12 % 4 = 0 取余運算結果是0,則表示4是12的一個因數 12 % 5 = 2 取余運算結果是2,則表示5不是12的一個因數
現在我們需要找一個整數的所有因數,那么就可以使用for 循環結構進行處理 從1 開始 到這個整數結束,如果取余運算結果是0,就繪制出這個因數
int a;
cin>>a;
for(int i=1;i<=a;i++){
if(a%i == 0){
pen.text(i);
pen.fd(100);
}
}
?同學們可以使用畫圖實現找因數的任務
- 輸入一個整數(小于50)
- 在當前位置畫出這個整數
- 在距離100的下一行使用紅色畫出這個整數的所有因數,每兩個因數間隔100距離
- 最后隱藏畫筆
輸入一個整數
int a;cin>>a;
pen.text(a);即可
第二行的因數需要向右繪制,所以我們可以先讓畫筆轉向右邊方向,如果其實位置是原點,可以直接讓畫筆移動到(0,-100)位置
int main(){int a;cin>>a;pen.rt(90).text(a).moveTo(0,-100);return 0;
}在距離100的下一行使用紅色畫出這個整數的所有因數,每兩個因數間隔100距離
最后隱藏畫筆
?
int main(){int a;cin>>a;pen.rt(90).text(a).moveTo(0,-100);for(int i=1;i<=a;i++){if(a%i == 0){pen.text(i,1);pen.up().fd(100).down();}} pen.hide();return 0;
}
課后作業?
同學們課后可以嘗試找一下30以內,哪個整數有最多的因數呢? 這個整數有多少個因數呢? 最好使用程序來進行判斷哦