---
# System prepended metadata

title: ch6迴圈
tags: [ch6]

---

:::info
1.當程式需要重複執行時就可以使用迴圈(Loop)
2.迴圈具備有:次數、進入迴圈的條件、離來開迴圈得˙條件、每次執行後計量的變化
:::

#c/c++的迴圈
:::success
1.for loop:已知要執行幾次時使用
2.While loop:包含loop的特性.但在不知道迴圈執行幾次時可使用While.噹條件成立時才會進入While loop 執行次數為0
3.do while loop:與while loop

:::
##for 迴圈

![image.png](https://hackmd.io/_uploads/r1OdqLvQa.png)

:::success
1~10000總和運算
:::

1.1~10000的總和
2.1~10000的偶數和
3.1~10000的3與7的倍數總和







:::info
練習:階乘運算
:::

1讓使用者輸入一個整數(n，在之間(需防呆)
2.計算 n! 的值後輸出
3.階層定義:







:::into
練習:找出最大公因數
:::
1.最大公因數定義:https://zh.wikipedia.org/zh-tw/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8
讓使用者輸入兩個正整數n1,n2,找出n1,n2的最大 因數
、、、cpp=1

、、、
#include <bits/stdc++.h>

using namespace std;

int main()
{
    //資料輸入
    int n1,n2;
    scanf("%d%d, &n1 ,&n2");
    
    //處理資料
    int gac = 1;     //預設的gcd=1
    //從2開始~(n1,n2的最小值)
    for(int i=2;i<=n1 && i<n2; i++){
        if(n1%i==0 && n2%i==0){
            // i同時為N1,N2的因數
            if(n1%i==0 && n2%i==0)
                //最大公因數變成i
             gac=1
        }
    }
    printf("GCD(%d, %d)=%d\n",n1 ,n2, gac);
    return 0;
}
![image](https://hackmd.io/_uploads/HJGO_KlET.png)
![image](https://hackmd.io/_uploads/S1IPqtlEp.png)
## While 迴圈




:::success
計算1+2+...+n的總和
:::

'''cpp=1

'''


:::success
無限輸入a,b。輸入a+b的結果
:::
'''cpp=1


'''



:::success
無限輸入n。輸入3n+1的結果
:::
'''cpp


'''


:::success
無限輸入n。輸入3n+1的結果
:::
'''cpp=1


'''
![image](https://hackmd.io/_uploads/BkWpx5g4p.png)




#include <iostream>

using namespace std;

int main()
{
     int a,  b;
     //c++的寫法
     /*
     while(cin>>a>>b){
            cout<<a+b<<endl;
     }
     /*
     //c++的寫法
     while(scanf("%d%d", &a, &d)==2){
    while(scanf("%d%d", &a, &b)!=EOF){//EOF:End Of File
        printf("%d\n", a+b);
    }
    return 0;
}
	
	
'''
	
	
:::success
無限輸入n。輸入3n+1
:::
1.任意大於1的自然數，若n為奇數，將n變成3n+1，否則變成n的一半
2.經過若千次上述的變換，最後n一定會變成1
3.請輸入 n。 輸入變換次數
	
'''cpp
	
'''
# do...while迴圈
![image](https://hackmd.io/_uploads/rklQzjgV6.png)

	
:::success
do while 與while 不同在於條件判斷位置，while為一開始就判斷條件。do while 為在結尾判斷條件，所以do while迴圈一定最少會被執行一次。
:::	

	
:::success
近似值計算: $\pi/4=1-1/3+1/5-1/7+1/9+\cdots$，直到最後一項小於$10^{-6}結束計算
:::	
	
'''cpp=1
	
	
'''	