查询以计算C ++中从1到N的无序互素对的数量

在此问题中,我们给Q个查询每个包含一个数字N。我们的任务是创建一个程序来解决查询,以计算C ++中从1到N的无序互质对的数量。

互素也称为相对素数或互素数是一对只有一个因数即1的数字。

让我们举个例子来了解这个问题,

输入:Q = 2,查询= [5,6] 

输出:10

说明

这些对是:(1、1),(1、2),(1、3),(1、4),(1、5),(2、3),(2、5),(3、4 ),(3、5),(4、5)

解决方法

解决该问题的最有希望的方法是使用Euler的Totient函数phi(N)。phi(N)计算出给定值N之前的互素数总数。欧拉的totient函数为,

$$