Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm một dãy các số tổng hợp có độ dài đã cho trong C ++


Giả sử chúng ta có một số n. Chúng ta phải tìm phạm vi các số nguyên dương, trong đó tất cả các số trong phạm vi là tổng hợp và độ dài của phạm vi là n. Nếu có nhiều hơn một dải ô, hãy in bất kỳ một dải ô nào. Số tổng hợp là một số mà nó có ít nhất một ước số khác 1 và chính nó.

Vì độ dài của phạm vi là n, thì nếu số đầu tiên là a, thì các số khác là a + 1, a + 2,…, a + n - 1, tất cả đều phải là hợp. Nếu ta thấy x !, trong đó x là số nguyên dương thì x có các thừa số là 2, 3, 4,…, p - 1. Vậy p! + i có thừa số i nên p! + i phải là hợp. P! + 2, p! + 3,… p! + p - 1, đều là hợp số. Vì vậy, phạm vi sẽ là [p! + 2, p! + p - 1]

Ví dụ

#include<iostream>
using namespace std;
int fact (int n) {
   if (n == 0)
      return 1;
   return n * fact(n-1);
}
void showRange(int n) {
   int a = fact(n + 2) + 2;
   int b = a + n - 1;
   cout << "[" << a << ", " << b << "]";
}
int main() {
   int n = 3 ;
   showRange(n);
}

Đầu ra

[122, 124]