📅  最后修改于: 2023-12-03 14:49:16.053000             🧑  作者: Mango
In this article, we will explore the concept of pronic numbers, which are the product of two consecutive integers. We will explain how to find subarrays in an array consisting only of pronic numbers, and give an algorithmic solution to the problem.
A pronic number is a number that is the product of two consecutive integers. The first few pronic numbers are:
0, 2, 6, 12, 20, 30, 42, 56, ...
The formula for the n
th pronic number is n * (n + 1)
.
Pronic numbers are a subset of the semiperfect numbers, which are numbers equal to the sum of some or all of their proper divisors. Pronic numbers are equal to the sum of their two factors.
Given an array, we want to find the number of subarrays consisting only of pronic numbers. A sub-array is a contiguous section of the array.
For example, given the array:
[0, 2, 3, 6, 7, 8, 12]
The subarrays consisting only of pronic numbers are:
[0, 2]
[6]
[12]
So the total number of subarrays we are looking for is 3.
We can solve this problem by iterating over the array and keeping track of the number of pronic numbers encountered so far. Whenever we encounter a non-pronic number, we reset this count to 0.
Here is the Python code for the solution:
def count_pronic_subarrays(arr):
count = 0
answer = 0
for i in arr:
if is_pronic(i):
count += 1
answer += count
else:
count = 0
return answer
def is_pronic(n):
for i in range(int(n**0.5)+1):
if i*(i+1)==n:
return True
return False
The count_pronic_subarrays()
function returns the number of subarrays consisting only of pronic numbers. The is_pronic()
function checks whether a given number is a pronic number.
In this article, we have discussed pronic numbers and shown how to find subarrays consisting only of pronic numbers in an array. We have provided an algorithmic solution in Python.