C ++程序查找唯一对,以使每个元素小于或等于N
在本文中,我们将讨论一个程序,以查找元素数小于或等于N并遵循某些特定条件的唯一数字对-
两个数字之差的平方必须等于这两个数字的LCM。
这两个数字的HCF可以表示为任何两个连续数字的乘积。
解决此问题的最佳方法是采用两个连续的数字(从1开始)并找到这些数字乘积的倍数。然后在倍数中,要指定一对数字,我们需要检查一对数字是否满足第一个给定条件。
例如,假设2和3。它们的乘积为6。现在,如果我们继续乘以6的倍数,我们将得到6、12、18、24…一次取两个数字,我们检查是否两个连续数字之间的差异平方(在这种情况下为36)等于这些数字的LCM。在这种情况下,我们最终得到的对是12和18。
推广方程式,我们得到两个数字分别为Z*(Z*(Z+1))和(Z+1)*(Z*(Z+1)),其中Z是HCF(连续对)中的第一个数字产品)。
最后,使用值应小于N的条件,我们得到
(Z+1)*(Z*(Z+1))<=N或Z3+(2*Z2)+Z<=N.
示例
#include <iostream> using namespace std; int main() { int N = 489, pairs, i = 1; //counting the number of pairs having elements less than N while((i*i*i) + (2*i*i) + i <= N) { i++; } pairs = i; cout << "Pairs :" << endl; //printing the two elements of the pair for(int j = 1; j < pairs; j++) { cout << j*(j*(j+1)) << " " << (j+1)*(j*(j+1)) << endl; } return 0; }
输出结果
Pairs : 2 4 12 18 36 48 80 100 150 180 252 294 392 448