#include<iostream>
using namespace std;
const int mod = 1e9 + 7;
int prime[8000010],m = 0;
bool is_Prime(int x)
{
for (int i = 1;i <= m;i++)
if (x % prime[i] == 0)
return false;
return true;
}
void pre()
{
for (int i = 2;i <= 100000;i++)
if (is_Prime(i))
{
prime[++m] = i;
}
}
int main()
{
pre();
int t;
scanf("%d",&t);
while(t--)
{
long long k;
long long p,q;
scanf("%lld%lld%lld",&k,&p,&q);
long long ans = q - p + 1;
int cnt = 0;
for (int i = 1;i <= m && prime[i] <= k;i++)
if (k % prime[i] == 0)
cnt++;
for (int i = 1;i <= cnt;i++)
ans = (ans * 2) % mod;
printf("%lld\n",ans);
}
return 0;
}
评测记录: