Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 숫자가 소수인지 확인하는 프로그램?

<시간/>

소수는 두 개의 숫자와 1로만 나누어 떨어지는 숫자입니다. 숫자의 인수는 그것을 나눌 수 있는 숫자입니다.

처음 10개의 소수의 목록은 2,3,5,7,11,13,17,23,29,31입니다.

소수가 아닌 수는 합성수입니다. 합성수는 두 개 이상의 숫자로 나눌 수 있는 숫자입니다.

Elser 다음 소수 및 합성 1은 자기 자신으로만 나눌 수 있기 때문에 소수도 합성도 아닌 1이 있습니다.

숫자가 소수인지 확인하는 방법 숫자가 소수인지 확인하기 위해 확인해야 할 두 가지 조건이 있습니다.

1) 1보다 큰 정수여야 합니다.

2) 하나와 숫자 자체의 두 가지 요소만 포함해야 합니다.

이 두 가지 조건이 충족되면 숫자는 소수라고 말할 수 있습니다.

우리 프로그램에서는 숫자를 그 숫자보다 작은 각 숫자로 나누는 것을 확인할 것입니다. 주어진 숫자보다 작은 숫자가 나누면 소수가 아닙니다. 그렇지 않으면 소수입니다.

두 수의 예를 들어 이 과정을 통해 소수인지 아닌지 확인해보자.

Input − Number1 − 42
Output − 42 is not a prime number

논리 - 42를 1보다 크고 42보다 작은 모든 숫자로 나눕니다. 따라서

42/2 =21 즉, 42는 2로 나눌 수 있습니다. 즉, 42는 다른 숫자로 나눌 수 있기 때문에 소수가 아닙니다.

Input − Number2 − 7
Output − 7 is a prime number

논리 - 7을 1보다 크고 7보다 작은 모든 숫자로 나눕니다. 따라서

7은 2로 나눌 수 없으므로 코드는 다음 숫자, 즉 3을 확인합니다.

7은 3으로 나눌 수 없으므로 코드는 다음 숫자, 즉 4를 확인합니다.

7은 4로 나눌 수 없으므로 코드는 다음 숫자, 즉 5를 확인합니다.

7은 5로 나눌 수 없으므로 코드는 다음 숫자, 즉 6을 확인합니다.

7은 6으로 나눌 수 없습니다. 즉, 7은 1로만 나눌 수 있고 7은 7이 소수임을 의미합니다.

위의 논리를 보면 숫자가 1000 더하기 또는 100000 더하기가 무엇인지 살펴봅니다. 그러면 프로그램은 for 루프에 대해 많은 반복을 수행해야 하므로 이 방법은 계산 시간이 많이 걸립니다. 따라서 반복 횟수를 줄이려면 더 나은 방법이어야 합니다.

이에 대한 최적화된 솔루션은 루프를 절반만 실행하는 것입니다. 이것은 숫자가 77이면 루프가 38까지만 실행됨을 의미합니다. 이렇게 하면 필요한 반복 횟수가 줄어들므로 이 알고리즘을 사용하여 프로그램을 만들 것입니다.

예시

#include <stdio.h>
int main() {
   int num = 33, flag = 0;
   for(int i=2 ; i < num/2 ; i++) {
      if(num%i == 0) {
         printf("%d is not a prime number", num);
         flag = 1;
         break;
      }
   }
   if(flag == 0) {
      printf("%d is a prime number", num);
   }
}

출력

33 is a prime number