MATLAB - 如何找到满足此条件的无限集的第一个整数?
MATLAB - How do I find the first integer of an infinite set that satisfies this condition?
我想找到最小的整数P
,使得集合{1,2,..., P}
中的素数个数小于P/6
。
我想通过(长时间的)反复试验得到答案,但想知道如何通过 MATLAB 验证这一点。
您可以使用 isprime
来检查数组中的任何值是否为素数。如果我们想检查所有整数直到整数 N
我们可以做
% You can change this to the maximum number that you'd like to consider for P
N = 2000;
possible_P_values = 2:N; % We omit 1 here since it's not a prime number
primes = isprime(possible_P_values);
要确定给定整数 N
之前出现了多少个素数,我们可以使用此逻辑矩阵的 cumsum
(累积和)
nPrimes_less_than_or_equal_to_P = cumsum(primes);
然后我们可以将 possible_P_values
除以 6 并检查到某个点的质数的数量是否小于该数。
is_less_than_P_over_6 = nPrimes_less_than_or_equal_to_P < (possible_P_values ./ 6);
然后我们可以识别第一次出现 find
possible_P_values(find(is_less_than_P_over_6, 1, 'first'))
% 1081
我想找到最小的整数P
,使得集合{1,2,..., P}
中的素数个数小于P/6
。
我想通过(长时间的)反复试验得到答案,但想知道如何通过 MATLAB 验证这一点。
您可以使用 isprime
来检查数组中的任何值是否为素数。如果我们想检查所有整数直到整数 N
我们可以做
% You can change this to the maximum number that you'd like to consider for P
N = 2000;
possible_P_values = 2:N; % We omit 1 here since it's not a prime number
primes = isprime(possible_P_values);
要确定给定整数 N
之前出现了多少个素数,我们可以使用此逻辑矩阵的 cumsum
(累积和)
nPrimes_less_than_or_equal_to_P = cumsum(primes);
然后我们可以将 possible_P_values
除以 6 并检查到某个点的质数的数量是否小于该数。
is_less_than_P_over_6 = nPrimes_less_than_or_equal_to_P < (possible_P_values ./ 6);
然后我们可以识别第一次出现 find
possible_P_values(find(is_less_than_P_over_6, 1, 'first'))
% 1081