在C ++中找到给定长度的复合数字范围
假设我们有一个数字n。我们必须找到正整数的范围,其中范围内的所有数字都是合成的,范围的长度为n。如果有多个范围,则打印任何一个范围。合成数是一个数字,其中至少有一个除1以外的除数本身。
由于范围的长度为n,因此,如果第一个数字为a,则其他数字为a+1,a+2…,a+n–1,所有这些都应该是合成的。如果我们看到x!,其中x是正整数,则x的因子为2、3、4,...,p–1。所以p!+我有一个因素我,所以p!+我必须是复合的。p!+2,p!+3,…p!+p–1都是复合的。因此范围将是[p!+2,p!+p–1]
示例
#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); }
输出结果
[122, 124]