이 튜토리얼에서는 주어진 숫자가 k-rough인지 확인하는 프로그램을 작성할 것입니다. 또는 k-jagged 숫자인지 아닌지.
가장 작은 소인수가 주어진 k보다 크거나 같은 수를 k-rough라고 합니다. 또는 k-jagged 번호.
문제를 해결하는 단계를 살펴보겠습니다.
- 숫자 초기화 n 및 k .
- n의 약수인 모든 소수 찾기 벡터에 저장합니다.
- 벡터에서 첫 번째 요소를 가져와 k와 비교 n 여부를 확인하기 위해 k-거친 또는 k-jagged 숫자인지 아닌지.
예시
코드를 봅시다.
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
vector<int> getPrimes(int n) {
vector<int> primes;
for (int i = 2; i < n; i++) {
if (n % i == 0 && isPrime(i)) {
primes.push_back(i);
}
}
return primes;
}
bool isRoughNumber(int n, int k) {
vector<int> primes = getPrimes(n);
return primes[0] >= k;
}
int main() {
int n = 75, k = 3;
if (isRoughNumber(n, k)) {
cout << n << " is a " << k << " rough number" << endl;
}else {
cout << n << " is not a " << k << " rough number" << endl;
}
return 0;
} 출력
위의 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
75 is a 3 rough number
결론
벡터에 모든 소수를 저장하지 않아도 됩니다. n의 첫 번째 소인수를 찾습니다. k와 비교 원하는 출력을 얻으려면. 위의 아이디어와 유사한 아이디어를 공간과 시간 복잡성이 더 적은 방식으로 구현합니다.
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.