任何一个自然数的立方等于连续奇数之和
这个题目改怎麼写~~~要写的简单点的我只学过ifwhilefor这些怎么写比较容易理解~~~验证上面结论:如,1^3=1;2^3=3+5;3^3=7+9+11要求:程序对...
这个 题目改怎麼写~~~
要写的简单点的 我只学过 if while for 这些
怎么写比较容易理解~~~
验证上面结论:如,1^3=1;2^3=3+5;3^3=7+9+11
要求:程序对每个输入的自然数计算并输出相应的连续奇数
不要在难啊 我只会简单的 while for if 这种级别的~~~~ 展开
要写的简单点的 我只学过 if while for 这些
怎么写比较容易理解~~~
验证上面结论:如,1^3=1;2^3=3+5;3^3=7+9+11
要求:程序对每个输入的自然数计算并输出相应的连续奇数
不要在难啊 我只会简单的 while for if 这种级别的~~~~ 展开
4个回答
展开全部
VC6.0下测试通过
#include <stdio.h>
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned long U32;
U16 m,n;
int Analyse ( U8 x )
{
U32 tmp;
U32 xxx;
xxx = x * x * x;
for ( U32 i = 0; i < 0xFFFF; i++ )
for ( U32 j = i + 1; j < 0xFFFF; j++ )
{
tmp = j * j - i * i;
if ( tmp == xxx )
{
m = (U16)i;
n = (U16)( j - 1 );
return 1;
}
if ( tmp > xxx )
if ( j == i + 1 )
return 0;
else
break;
}
return 0;
}
int ShowRes ( U8 x )
{
int tmp;
U32 sum;
sum = 0;
tmp = Analyse ( x );
if ( tmp == 0 )
printf ( "No result.\n" );
else
{
printf ( "%d^3 = ", x );
for ( U32 i = m; i <= n; i++ )
{
printf ( "%d+", 2*i+1 );
sum += 2 * i + 1;
}
printf ( "%c \n", 8 );
if ( sum != (U32)( x * x * x ) )
printf ( "error!\n" );
}
return 0;
}
int main(void)
{
for ( U32 i = 1; i < 10; i++ )
ShowRes ( i );
return 0;
}
#include <stdio.h>
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned long U32;
U16 m,n;
int Analyse ( U8 x )
{
U32 tmp;
U32 xxx;
xxx = x * x * x;
for ( U32 i = 0; i < 0xFFFF; i++ )
for ( U32 j = i + 1; j < 0xFFFF; j++ )
{
tmp = j * j - i * i;
if ( tmp == xxx )
{
m = (U16)i;
n = (U16)( j - 1 );
return 1;
}
if ( tmp > xxx )
if ( j == i + 1 )
return 0;
else
break;
}
return 0;
}
int ShowRes ( U8 x )
{
int tmp;
U32 sum;
sum = 0;
tmp = Analyse ( x );
if ( tmp == 0 )
printf ( "No result.\n" );
else
{
printf ( "%d^3 = ", x );
for ( U32 i = m; i <= n; i++ )
{
printf ( "%d+", 2*i+1 );
sum += 2 * i + 1;
}
printf ( "%c \n", 8 );
if ( sum != (U32)( x * x * x ) )
printf ( "error!\n" );
}
return 0;
}
int main(void)
{
for ( U32 i = 1; i < 10; i++ )
ShowRes ( i );
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-11-01
展开全部
DEV-C++通过
#include <iostream>
using namespace std;
int main()
{
unsigned int x=0,num=1,i;
unsigned long N=0,L=0;
cin >>x;
N=x*x*x;
if(N==0){cout <<"+0=0" <<endl;system("pause");return 0;}
while(L!=N)
{
L=0;
for(i=num;i<=(N/2+1);i+=2)
{
L+=i;
if(L==N) {break;}
}
if(L!=N) num+=2;
}
for(int n=num;n<=i;n+=2)
cout <<"+" <<n ;
cout <<"=" <<L <<endl;
system("pause");
return 0;
}
#include <iostream>
using namespace std;
int main()
{
unsigned int x=0,num=1,i;
unsigned long N=0,L=0;
cin >>x;
N=x*x*x;
if(N==0){cout <<"+0=0" <<endl;system("pause");return 0;}
while(L!=N)
{
L=0;
for(i=num;i<=(N/2+1);i+=2)
{
L+=i;
if(L==N) {break;}
}
if(L!=N) num+=2;
}
for(int n=num;n<=i;n+=2)
cout <<"+" <<n ;
cout <<"=" <<L <<endl;
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道楼主注意没:
1^3=1^2-0^2=(1-0)*(1+0)=1*1;
2^3=3^2-1^2=(3-1)*(3+1)=2*4;
3^3=6^2-3^2=(6-3)*(6+3)=3*9;
因此我只要找出你输入的自然数两个同号的因子a,b。
然后利用x-y=a;x+y=b;求出x,y.就可以了
程序如下:
#include <stdio.h>
#include <math.h>
int main()
{
int n;
scanf("%d",&n);
int data=(int)sqrt(n);
int a,b,x,y,i,j;
for(i=1;i<=data;i++)
{
if(n%i==0)
{
a=i;
b=n/i;
if(((a+b)&1)==0)
{
x=(a+b)/2;
y=(b-a)/2;
break;
}
}
}
int begin=2*y+1;
int end=2*x-1;
printf("%d=",n);
for(j=begin;j<end;j+=2)
{
printf("%d+",j);
}
printf("%d\n",end);
return 0;
}
1^3=1^2-0^2=(1-0)*(1+0)=1*1;
2^3=3^2-1^2=(3-1)*(3+1)=2*4;
3^3=6^2-3^2=(6-3)*(6+3)=3*9;
因此我只要找出你输入的自然数两个同号的因子a,b。
然后利用x-y=a;x+y=b;求出x,y.就可以了
程序如下:
#include <stdio.h>
#include <math.h>
int main()
{
int n;
scanf("%d",&n);
int data=(int)sqrt(n);
int a,b,x,y,i,j;
for(i=1;i<=data;i++)
{
if(n%i==0)
{
a=i;
b=n/i;
if(((a+b)&1)==0)
{
x=(a+b)/2;
y=(b-a)/2;
break;
}
}
}
int begin=2*y+1;
int end=2*x-1;
printf("%d=",n);
for(j=begin;j<end;j+=2)
{
printf("%d+",j);
}
printf("%d\n",end);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个题目什么意思看不明白
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询