이 문제는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!