第1章基本文法-6循環(for)練習は1つの数のすべての約数を求めます
1430 ワード
ケース:数を入力し、この数のすべての約数を出力します.
例えば、入力100は、出力100の約1,2,4,5,10,20,25,50100である.
分析:方法一、
入力した数字をinputIntで表し、1からinputIntにループして、数字ごとに試して、inputIntで割り切れるなら、その約数で、そうでなければそうではありません.整除の判断方法:aがbを整除できれば、bをaで割ると残数がなく、プログラムはb%a=0を表す.
コードは次のとおりです.
さらに分析する:方法2
100の約数をよく観察し、順番を変えます.
1,100, 2,50, 4,25, 5,20, 10,10;
すなわち、1100/1、2100/2、4100/4、5100/5、10100/10である.
言語記述:aがbの約数であれば、b/aもbの約数に違いない.
これでサイクルの回数を減らすことができ、ルートの下のinputIntにサイクルするだけでいいです.プログラムではこのようにルート演算を行いますか?ここではmathヘッダファイルを呼び出し、sqrtメソッドを使用する必要があります.
コードは次のとおりです.
再分析方法3:
整数aの場合、2がaの約数でなければ、4,6,8,10......2の倍数はaの約数ではなく、このように推定される.
まとめると、
整数aの場合、bがaの約数でなければ、nb(bの倍数)もaの約数ではない.
この法則を適用すると、サイクルの回数を減らすことができます.
コード省略.
例えば、入力100は、出力100の約1,2,4,5,10,20,25,50100である.
分析:方法一、
入力した数字をinputIntで表し、1からinputIntにループして、数字ごとに試して、inputIntで割り切れるなら、その約数で、そうでなければそうではありません.整除の判断方法:aがbを整除できれば、bをaで割ると残数がなく、プログラムはb%a=0を表す.
コードは次のとおりです.
#include
using namespace std;
int main() {
int inputInt;// ,
cout<>inputInt;//
// 1 inputInt
for(int i=1;i<=inputInt;i++){
// i inputInt
if(inputInt%i==0){
// i inputInt ,
cout<
さらに分析する:方法2
100の約数をよく観察し、順番を変えます.
1,100, 2,50, 4,25, 5,20, 10,10;
すなわち、1100/1、2100/2、4100/4、5100/5、10100/10である.
言語記述:aがbの約数であれば、b/aもbの約数に違いない.
これでサイクルの回数を減らすことができ、ルートの下のinputIntにサイクルするだけでいいです.プログラムではこのようにルート演算を行いますか?ここではmathヘッダファイルを呼び出し、sqrtメソッドを使用する必要があります.
コードは次のとおりです.
#include
#include
using namespace std;
int main() {
int inputInt;// ,
cout<>inputInt;//
// 1 inputInt
for(int i=1;i<=sqrt(inputInt);i++){
// i inputInt
if(inputInt%i==0){
// i inputInt ,
cout<i!=inputInt/i){
cout<
再分析方法3:
整数aの場合、2がaの約数でなければ、4,6,8,10......2の倍数はaの約数ではなく、このように推定される.
まとめると、
整数aの場合、bがaの約数でなければ、nb(bの倍数)もaの約数ではない.
この法則を適用すると、サイクルの回数を減らすことができます.
コード省略.