c语言程序:编写函数,判断一个正整数是否可以写成两个正整数的立方和

输入:第一行是一个不大于100的正整数,表示测试数据的组数。接下来是各组测试数据。每组数据为一行,只有一个正整数,且值不大于1,000,000,000,表示要判断的整数。... 输入:第一行是一个不大于100的正整数,表示测试数据的组数。接下来是各组测试数据。
每组数据为一行,只有一个正整数,且值不大于1,000,000,000,表示要判断的整数。

输出:对于每组数据输出一行, 如果给定整数可以写成两个整数的立方和,则输出“Yes”,否则输出“No”
展开
 我来答
听不清啊
高粉答主

2019-03-09 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#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;
}
l7722526
2019-03-09 · TA获得超过2.7万个赞
知道大有可为答主
回答量:2.8万
采纳率:84%
帮助的人:3791万
展开全部
#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); }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暗送秋浡365
2019-03-09 · TA获得超过4660个赞
知道大有可为答主
回答量:6401
采纳率:78%
帮助的人:311万
展开全部


楼上的都是不看题目的吗,写个判断质数的代码干嘛???

你这题,使用循环也能做,但是需要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;
}



追问
你这回答的是啥!!??
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式