求一个质数能否写成两个立方数的差
,
是质数,两个因子的乘积只能是1和本身,又因为
,所以a-b=1;
所以a=b+1,所以,可以先判断
是否能整除3,再继续判断即可
#include<cstdio>
#include<cmath>
typedef long long ll;
int main(){
int t;
scanf("%d",&t);
while(t--){
ll p;
scanf("%lld",&p);
p-=1;
int flag=0;
if(p%3==0){
p/=3;
for(ll i=sqrt(p);i*(i+1)<=p;i++)
if(i*(i+1)==p)
flag=1;
if(flag)
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n");
}
return 0;
}
本文介绍了一种算法,用于判断一个质数是否可以表示为两个立方数之差。通过数学推导,得出只需判断该质数减一后是否能被3整除,并进一步检查特定条件下的整除性。
1060

被折叠的 条评论
为什么被折叠?



