> 백엔드 개발 > C++ > 흥미로운 해결책은 n보다 작은 모든 소수를 얻는 것입니다.

흥미로운 해결책은 n보다 작은 모든 소수를 얻는 것입니다.

WBOY
풀어 주다: 2023-09-03 12:41:07
앞으로
630명이 탐색했습니다.

흥미로운 해결책은 n보다 작은 모든 소수를 얻는 것입니다.

여기에서는 n보다 작은 모든 소수를 효율적인 방법으로 생성하는 방법을 살펴보겠습니다. 이 방법에서는 윌슨의 정리를 사용합니다. 그의 정리에 따르면 숫자 k가 소수이면 ((k - 1)! + 1) mod k는 0이 됩니다. 이 아이디어를 얻기 위해 알고리즘을 살펴보겠습니다.

이 아이디어는 큰 정수를 지원하지 않기 때문에 C나 C++와 같은 언어에서는 직접 작동하지 않습니다. 계승은 큰 수를 생성합니다.

algorithm

genAllPrime(n)

Begin
   fact := 1
   for i in range 2 to n-1, do
      fact := fact * (i - 1)
      if (fact + 1) mod i is 0, then
         print i
      end if
   done
End
로그인 후 복사

Example

의 중국어 번역은 다음과 같습니다:

Example

#include <iostream>
using namespace std;
void genAllPrimes(int n){
   int fact = 1;
   for(int i=2;i<n;i++){
      fact = fact * (i - 1);
      if ((fact + 1) % i == 0){
         cout<< i << " ";
      }
   }
}
int main() {
   int n = 10;
   genAllPrimes(n);
}
로그인 후 복사

Output

2 3 5 7
로그인 후 복사

위 내용은 흥미로운 해결책은 n보다 작은 모든 소수를 얻는 것입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿