第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を表す.
コードは次のとおりです.
#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の約数ではない.
この法則を適用すると、サイクルの回数を減らすことができます.
コード省略.