소수는 두 개의 숫자와 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