c语言程序:编写函数,判断一个正整数是否可以写成两个正整数的立方和
输入:第一行是一个不大于100的正整数,表示测试数据的组数。接下来是各组测试数据。每组数据为一行,只有一个正整数,且值不大于1,000,000,000,表示要判断的整数。...
输入:第一行是一个不大于100的正整数,表示测试数据的组数。接下来是各组测试数据。
每组数据为一行,只有一个正整数,且值不大于1,000,000,000,表示要判断的整数。
输出:对于每组数据输出一行, 如果给定整数可以写成两个整数的立方和,则输出“Yes”,否则输出“No” 展开
每组数据为一行,只有一个正整数,且值不大于1,000,000,000,表示要判断的整数。
输出:对于每组数据输出一行, 如果给定整数可以写成两个整数的立方和,则输出“Yes”,否则输出“No” 展开
3个回答
展开全部
#include<stdio.h>
int main()
{ int n,x,i,j;
scanf("%d",&n);
while(n--)
{scanf("%d",&x);
if(x<0)
{printf("No\n");
continue;
}
for(i=1;i*i*i<=x;i++);
--i;
x-=i*i*i;
for(j=1;j*j*j<=x;j++);
--j;
x-=j*j*j;
printf("%s\n",x?"No\n":"Yes\n");
}
return 0;
}
展开全部
#include<stdio.h> void fun(int n) { int i; for(i=2;i<n-1;i++) if(n%i==0) { printf("%d不是素数!\n",n); break; } if(i==n-1) printf("%d是素数!\n",n); } void main() { int n,i; scanf("%d",&n); fun(n); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的都是不看题目的吗,写个判断质数的代码干嘛???
你这题,使用循环也能做,但是需要O(n)的时间,如果运用一点数学方法,就是解方程的问题,只需O(1)时间
设要判断的质数为p,由题意p=a^3-b^3=(a-b)(a^2+b^2+ab),要使得p是质数,那么必定有a-b等于1,故p=(a-b)^2+3ab=1+3ab=1+3(b+1)b,即有p=3b²+3b+1
那么问题就化为二元一次方程 3b²+3b+(1-p)=0 是否有正整数解了
由求根公式得 b=(-0.5)+sqrt(12*p-3)/6,那么判断这个式子的值是否是整数就行了
bool Check(const unsigned p) // p为待判断的质数
{
double delte = sqrt(12*p-3);
if( (int)delte != delte ) // △不为整数,根必定不为整数
return false;
double b = (-0.5) + sqrt(12*p-3)/6.0; // 求根
if( (int)b == b) // 判断是否为整数
return true;
return false;
}
追问
你这回答的是啥!!??
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询