# 4.2 Loop Exercise

## ৪.২ অনুশীলন: লুপ (২২)

1. \[19] যেকোনো একটি সংখ্যার নামতা প্রিন্ট কর।
2. \[20] একটি পূর্ণ সংখ্যার ফ্যাক্টরিয়াল নির্ণয় কর। \[N! = 1 × 2 × 3 × 4 × ......... × N]
3. \[21] একটি পূর্ণ সংখ্যার উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।
4. \[22] একটি পূর্ণ সংখ্যার প্রকৃত উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।
5. \[23] একটি পূর্ণ সংখ্যার মোট উৎপাদক (Factor)/গুণনীয়ক (Divisor) সংখ্যা নির্ণয় কর।
6. \[24] একটি পূর্ণ সংখ্যা মৌলিক (Prime) সংখ্যা কিনা নির্ণয় কর।
7. \[25] ১ থেকে n পর্যন্ত সংখ্যা সমূহের মধ্যে মৌলিক (Prime) সংখ্যা গুলো নির্ণয় কর।
   1. \[25.1] ১ থেকে ৩০ পর্যন্ত সংখ্যা সমূহের মধ্যে মৌলিক (Prime) সংখ্যা গুলো নির্ণয় কর।
8. \[26] একটি পূর্ণ সংখ্যার শুধুমাত্র জোড় উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।
9. \[27] একটি পূর্ণ সংখ্যার শুধুমাত্র বিজোড় উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।
10. \[28] দুইটি সংখ্যার গ.সা.গু নির্ণয় কর।
11. \[29] দুইটি সংখ্যার ল.সা.গু নির্ণয় কর।
12. \[30] দুইটি সংখ্যা সহগুণক (Co-Prime) কিনা নির্ণয় কর। \[if GCD (a, b) == 1, then a and b are Co-Prime]
13. \[31] একটি পূর্ণ সংখ্যার উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলোর যোগফল নির্ণয় কর।
14. \[32] একটি পূর্ণ সংখ্যার প্রকৃত উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলোর যোগফল নির্ণয় কর।
15. \[33] একটি পূর্ণ সংখ্যা পারফেক্ট (Perfect) সংখ্যা কিনা নির্ণয় কর।
16. \[34] একটি পূর্ণ সংখ্যা Perfect, Abundant, or Defective সংখ্যা কিনা নির্ণয় কর।
17. \[35] একটি পূর্ণ সংখ্যা Amicable সংখ্যা কিনা নির্ণয় কর। \[sopd(a)==b&\&sopd(b)==a]
18. \[36] একটি পূর্ণ সংখ্যায় কয়টি অংক রয়েছে নির্ণয় কর।
19. \[37] একটি পূর্ণ সংখ্যায় অংক গুলোকে বিপরীত ক্রমে প্রদর্শণ কর।
20. \[38] একটি পূর্ণ সংখ্যার অংক গুলোর যোগফল নির্ণয় কর।
21. \[39] একটি পূর্ণ সংখ্যার অংক গুলোর যোগফল নির্ণয় কর, যতক্ষন না যোগফল এক অংক বিশিষ্ট হয়।
22. \[40] একটি পূর্ণ সংখ্যা প্যালিণ্ড্রম সংখ্যা কিনা নির্ণয় কর।

## সমাধান

### \[19] যেকোনো একটি সংখ্যার নামতা প্রিন্ট কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    
    scanf("%d", &n);
    for(i = 1; i <= 10; i++){
        printf("%d x %d = %d\n", n, i, n * i);
    }

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output                                                                                                                                                                          |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 5            | <p>5 x 1 = 5</p><p>5 x 2 = 10</p><p>5 x 3 = 15</p><p>5 x 4 = 20</p><p>5 x 5 = 25</p><p>5 x 6 = 30</p><p>5 x 7 = 35</p><p>5 x 8 = 40</p><p>5 x 9 = 45</p><p>5 x 10 = 50</p>             |
| 10           | <p>10 x 1 = 10</p><p>10 x 2 = 20</p><p>10 x 3 = 30</p><p>10 x 4 = 40</p><p>10 x 5 = 50</p><p>10 x 6 = 60</p><p>10 x 7 = 70</p><p>10 x 8 = 80</p><p>10 x 9 = 90</p><p>10 x 10 = 100</p> |

### \[20] একটি পূর্ণ সংখ্যার ফ্যাক্টরিয়াল নির্ণয় কর। \[N! = 1 × 2 × 3 × 4 × ......... × N]

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    long long factorial = 1;

    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        factorial *= i;
    }
    printf("%d! = %lld\n", N, factorial);

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 5            | 5! = 120      |
| 10           | 10! = 3628800 |

### \[21] একটি পূর্ণ সংখ্যার উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            printf("%d ", i);
        }
    }
    printf("\n");

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output           |
| ------------ | ----------------------- |
| 28           | 1 2 4 7 14 28           |
| 100          | 1 2 4 5 10 20 25 50 100 |

### \[22] একটি পূর্ণ সংখ্যার প্রকৃত উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    
    scanf("%d", &n);
    for (i = 1; i < n; i++) {
        if (n % i == 0) {
            printf("%d ", i);
        }
    }
    printf("\n");

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output       |
| ------------ | ------------------- |
| 28           | 1 2 4 7 14          |
| 100          | 1 2 4 5 10 20 25 50 |

### \[23] একটি পূর্ণ সংখ্যার মোট উৎপাদক (Factor)/গুণনীয়ক (Divisor) সংখ্যা নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, count = 0;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            count++;
        }
    }
    printf("%d\n", count);

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 28           | 6             |
| 100          | 9             |

### \[24] একটি পূর্ণ সংখ্যা মৌলিক (Prime) সংখ্যা কিনা নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, count = 0;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            count++;
        }
    }
    if(count == 2){
        printf("%d is a Prime Number\n", n);
    }
    else{
        printf("%d is a Not Prime Number\n", n);
    }

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output             |
| ------------ | ------------------------- |
| 13           | 13 is a Prime Number      |
| 100          | 100 is a Not Prime Number |

### \[25] ১ থেকে n পর্যন্ত সংখ্যা সমূহের মধ্যে মৌলিক (Prime) সংখ্যা গুলো নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, j, count;
    
    scanf("%d", &n);
    for( j = 1; j <= n; j++){
        count = 0;
        for (i = 1; i <= j; i++) {
            if (j % i == 0) {
                count++;
            }
        }
        if(count == 2){
            printf("%d ", j);
        }
    }
    printf("\n", n);
    
    return 0;
}
```
{% endcode %}

<table><thead><tr><th width="174">Sample Input</th><th>Sample Output</th></tr></thead><tbody><tr><td>30</td><td>2 3 5 7 11 13 17 19 23 29</td></tr><tr><td>100</td><td>2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97</td></tr></tbody></table>

#### \[25.1] ১ থেকে ৩০ পর্যন্ত সংখ্যা সমূহের মধ্যে মৌলিক (Prime) সংখ্যা গুলো নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, j, count;
    
    for( j = 1; j <= 30; j++){
        count = 0;
        for (i = 1; i <= j; i++) {
            if (j % i == 0) {
                count++;
            }
        }
        if(count == 2){
            printf("%d ", j);
        }
    }
    printf("\n", n);
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output             |
| ------------ | ------------------------- |
|              | 2 3 5 7 11 13 17 19 23 29 |

### \[26] একটি পূর্ণ সংখ্যার শুধুমাত্র জোড় উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            if( i % 2 == 0 ){
                printf("%d ", i);
            }
        }
    }
    printf("\n");

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output    |
| ------------ | ---------------- |
| 28           | 2 4 14 28        |
| 100          | 2 4 10 20 50 100 |

### \[27] একটি পূর্ণ সংখ্যার শুধুমাত্র বিজোড় উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলো প্রদর্শণ কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            if( i % 2 == 1 ){
                printf("%d ", i);
            }
        }
    }
    printf("\n");

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 28           | 1 7           |
| 100          | 1 5 25        |

### \[28] দুইটি সংখ্যার গ.সা.গু নির্ণয় কর।

```c
#include<stdio.h>
int main(){
    int a, b, temp, gcd;

    scanf("%d%d", &a, &b);
    while(b != 0){
        temp = b;
        b = a % b;
        a = temp;
    }
    gcd = a;
    printf("%d\n", gcd);
    
    return 0;
}
```

| Sample Input | Sample Output |
| ------------ | ------------- |
| 56 98        | 14            |
| 20 28        | 4             |

### \[29] দুইটি সংখ্যার ল.সা.গু নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int a, b, gcd, lcm;
    int temp, temp_a, temp_b;

    scanf("%d%d", &a, &b);
    temp_a = a, temp_b = b;
    while(temp_b != 0){
        temp = temp_b;
        temp_b = temp_a % temp_b;
        temp_a = temp;
    }
    gcd = temp_a;
    lcm = (a * b) / gcd;
    printf("%d\n", lcm);

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 12 15        | 60            |
| 20 25        | 100           |

### \[30] দুইটি সংখ্যা সহগুণক (Co-Prime) কিনা নির্ণয় কর। \[if GCD (a, b) == 1, then a and b are Co-Prime]

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int a, b, temp, gcd;

    scanf("%d%d", &a, &b);
    while(b != 0){
        temp = b;
        b = a % b;
        a = temp;
    }
    gcd = a;
    if(gcd == 1){
        printf("Co-Prime\n");
    }
    else{
        printf("Not Co-Prime\n");
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 20 23        | Co-Prime      |
| 20 25        | Not Co-Prime  |

### \[31] একটি পূর্ণ সংখ্যার উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলোর যোগফল নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, sum = 0;
    
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
    printf("%d\n", sum);

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 28           | 56            |
| 100          | 217           |

### \[32] একটি পূর্ণ সংখ্যার প্রকৃত উৎপাদক (Factor)/গুণনীয়ক (Divisor) গুলোর যোগফল নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, sum = 0;
    
    scanf("%d", &n);
    for (i = 1; i < n; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
    printf("%d\n", sum);

    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 28           | 28            |
| 100          | 117           |

### \[33] একটি পূর্ণ সংখ্যা পারফেক্ট (Perfect) সংখ্যা কিনা নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, sum = 0;
    
    scanf("%d", &n);
    for (i = 1; i < n; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
    if(sum == n){
        printf("%d is a Perfect Number\n", n);
    }
    else{
        printf("%d is a Not Perfect Number\n", n);
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output               |
| ------------ | --------------------------- |
| 28           | 28 is a Perfect Number      |
| 100          | 100 is a Not Perfect Number |

### \[34] একটি পূর্ণ সংখ্যা Perfect, Abundant, or Defective সংখ্যা কিনা নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, i, sum = 0;
    
    scanf("%d", &n);
    for (i = 1; i < n; i++) {
        if (n % i == 0) {
            sum += i;
        }
    }
    if(sum == n){
        printf("%d is a Perfect Number\n", n);
    }
    else if( sum > n){
        printf("%d is a Abundant Number\n", n);
    }
    else{
        printf("%d is a Defective Number\n", n);
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output            |
| ------------ | ------------------------ |
| 28           | 28 is a Perfect Number   |
| 30           | 30 is a Abundant Number  |
| 35           | 35 is a Defective Number |

### \[35] একটি পূর্ণ সংখ্যা Amicable সংখ্যা কিনা নির্ণয় কর। \[sopd(a)==b&\&sopd(b)==a]

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int a, b, i, sopd_a = 0, sopd_b = 0;
    
    scanf("%d%d", &a, &b);
    for (i = 1; i < a; i++) {
        if (a % i == 0) {
            sopd_a += i;
        }
    }
    for (i = 1; i < b; i++) {
        if (b % i == 0) {
            sopd_b += i;
        }
    }
    if(sopd_a == b && sopd_b == a){
        printf("Amicable Number\n");
    }
    else{
        printf("Not Amicable Number\n");
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output       |
| ------------ | ------------------- |
| 220 284      | Amicable Number     |
| 20 24        | Not Amicable Number |

### \[36] একটি পূর্ণ সংখ্যায় কয়টি অংক রয়েছে নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, count = 0;
    
    scanf("%d", &n);
    while(n != 0){
        n /= 10;
        count++;
    }
    printf("%d\n", count);
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 100          | 3             |
| 12345        | 5             |

### \[37] একটি পূর্ণ সংখ্যায় অংক গুলোকে বিপরীত ক্রমে প্রদর্শণ কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n;
    
    scanf("%d", &n);
    while(n != 0){
        printf("%d", n % 10);
        n /= 10;
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 12345        | 54321         |
| 987654321    | 123456789     |

### \[38] একটি পূর্ণ সংখ্যার অংক গুলোর যোগফল নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, sum = 0;
    
    scanf("%d", &n);
    while(n != 0){
        sum += n % 10;
        n /= 10;
    }
    printf("%d\n", sum);
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 12345        | 15            |
| 987654321    | 45            |

### \[39] একটি পূর্ণ সংখ্যার অংক গুলোর যোগফল নির্ণয় কর, যতক্ষন না যোগফল এক অংক বিশিষ্ট হয়।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, sum;
    
    scanf("%d", &n);
    while(n > 9){
        sum = 0;
        while(n != 0){
            sum += n % 10;
            n /= 10;
        }
        n = sum;
    }
    printf("%d\n", sum);
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output |
| ------------ | ------------- |
| 12345        | 6             |
| 987654321    | 9             |

### \[40] একটি পূর্ণ সংখ্যা প্যালিণ্ড্রম সংখ্যা কিনা নির্ণয় কর।

{% code lineNumbers="true" %}
```c
#include<stdio.h>
int main(){
    int n, a, b = 0;
    
    scanf("%d", &n);
    a = n;
    while(n != 0){
        b = b * 10 + n % 10;
        n /= 10;
    }
    if(a == b){
        printf("%d is a Palindrom.\n", a);
    }
    else{
        printf("%d is a Not Palindrom.\n", a);
    }
    
    return 0;
}
```
{% endcode %}

| Sample Input | Sample Output           |
| ------------ | ----------------------- |
| 1221         | 1221 is a Palindrom.    |
| 123          | 123 is Not a Palindrom. |
