> 백엔드 개발 > C++ > Smarandache-Welin 수열

Smarandache-Welin 수열

王林
풀어 주다: 2023-09-09 11:45:03
앞으로
855명이 탐색했습니다.

Smarandache-Welin 수열

이 문제는 Smarandache-Wellin 수열의 첫 번째 m항을 인쇄하는 것으로 구성됩니다. 여기서 m은 양의 정수입니다. 우리는 Smarandache-Wellin 수열의 첫 번째 m 항을 인쇄하는 알고리즘을 C++에서 볼 것입니다. 하지만 그 전에 먼저 Smarandache-Wellin 수열을 이해해야 합니다.

A Smarandache-Wellin 수열은 Smarandache-Wellin 수로 구성된 수열입니다. Smarandache-Wellin 수는 연속된 소수를 연결하여 형성된 정수입니다. 처음 몇 개의 소수는 2, 3, 5, 7, 11, 13, 17, 19, 23…

  • 수열의 첫 번째 Smarandache-Wellin 수는 2입니다.

  • 수열의 두 번째 숫자는 23으로 처음 두 개의 연속된 소수를 연결하여 형성됩니다.

  • 수열의 세 번째 숫자는 235인데, 처음 세 개의 연속된 소수를 연결하여 형성되었다고 할 수 있습니다.

마찬가지로, 스마란다케-웰린 수열의 m번째 항은 처음 m개의 연속된 소수의 연결이라는 결론을 내릴 수 있습니다. 6번째 Smarandache-Wellin 번호를 원한다고 가정하면 이는 처음 6개의 연속 번호인 23571113을 연결한 것입니다.

위 문제에서는 양의 정수 N이 주어지며, 우리의 임무는 Smarandache-Wellin 수열의 첫 번째 N개의 Smarandache-Wellin 수를 출력하는 것입니다. 예를 들어

INPUT: N=4

출력: 2 23 235 2357

설명: 이것은 각각 처음 4개의 연속된 소수로 구성된 Smarandache-Wellin 수열의 처음 4개 숫자입니다.

입력: N=7

출력: 2 23 235 2357 235711 23571113 2357111317

설명: Smarandache-Wellin 수열의 i번째 항목은 i가 1보다 크거나 같고 7보다 작거나 같은 첫 번째 연속 소수의 연결입니다.

알고리즘

이 방법은 보기만큼 간단할 수 있습니다. 우리는 Smarandache-Wellin 수열의 N번째 항이 처음 N개의 연속된 소수의 연결이라는 것을 알고 있습니다.

따라서 첫 번째 N 연속 소수를 찾으면 각 i 번째 항의 I 연속 소수를 추가로 연결하여 Smarandache-Wellin 수열의 첫 번째 N Smarandache-Wellin 수가 제공됩니다. 아래 단계에 따라 첫 번째 N 소수를 찾을 수 있습니다.

  • 첫 번째 N개의 연속 소수를 얻기 위해 소수의 개수를 저장하기 위해 변수를 만듭니다.

  • 첫 번째 N개의 소수를 얻기 위해 개수가 N과 같아질 때까지 루프를 사용하여 숫자가 소수인지 확인하세요. 소수라면 소수의 개수를 1씩 늘립니다.

  • 숫자가 소수인지 확인하기 위해 i=2부터 시작하여 숫자가 제곱근보다 작거나 같을 때까지 for 루프를 반복합니다. 숫자가 다른 숫자로 나누어지면 소수에는 숫자 자체와 1이라는 두 가지 요소만 있으므로 소수가 아닙니다.

  • 수학에 따르면 합성수에는 항상 숫자의 제곱근보다 작은 요소가 하나 이상 포함됩니다. 따라서 숫자가 소수인지 확인하려면 숫자의 제곱근까지 반복하면 됩니다.

이런 식으로 2부터 시작하여 소수의 개수가 N이 될 때까지 하나씩 확인하면 처음 N개의 연속된 소수를 가져와서 배열에 저장할 수 있습니다.

문제의 다음 작업은 Smarandache-Wellin 시퀀스의 첫 번째 N개 항목을 인쇄하는 것입니다. 이 작업은 매우 간단합니다. 중첩 루프를 사용하고 처음 N개의 연속 소수를 저장하는 배열을 반복하여 이를 수행할 수 있습니다. 우리는 루프에서 0부터 배열의 크기까지 반복한 다음 중첩 루프에서 0부터 i까지 반복하고 i까지 모든 소수를 인쇄합니다. 이 방법으로 각 i번째 항목에 대해 이를 달성할 수 있습니다. 먼저 i 연속된 소수입니다.

방법

다음 단계를 통해 원하는 결과를 얻을 수 있습니다−

  • 숫자가 소수인지 확인하려면 함수를 만드세요.

  • 첫 번째 N 소수를 배열에 저장하고 해당 배열을 사용하여 처음 j 연속 소수를 연결하여 j번째 항을 얻는 또 다른 함수를 만듭니다.

  • 소수 개수를 세는 count라는 변수를 선언하세요. 그리고 개수가 N이 되기 전에 2부터 시작하는 각 숫자가 소수인지 확인됩니다. 소수라면 우리가 만든 배열에 저장됩니다.

  • 각 용어의 첫 번째 N 필수 소수를 연결하기 위해 중첩된 for 루프를 사용합니다. 이것이 Smarandache-Wellin 수열의 첫 번째 N 항을 인쇄하는 방법입니다.

위 알고리즘을 사용하여 문제를 해결하는 C++ 코드 -

으아아아

출력

으아아아

시간 복잡도: O(N*logN), N까지 각 숫자가 소수인지 확인하고 싶기 때문입니다.

공간 복잡도: O(N), 크기 N의 배열을 사용하기 때문입니다.

결론

이 글에서는 Smarandache-Wellin 수열과 그 뒤에 숨겨진 개념에 대해 배웠습니다. 효율적인 알고리즘을 사용하여 C++에서 Smarandache-Wellin 시퀀스의 첫 번째 N 항을 인쇄하는 방법도 살펴보았습니다.

이 글을 읽으면서 문제에 대한 모든 개념을 명확하게 이해할 수 있기를 바랍니다.

위 내용은 Smarandache-Welin 수열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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