c语言 任何一个自然数的立方等于连续奇数之和

作者&投稿:子丰云 (若有异议请与网页底部的电邮联系)
用C语言证明任何一个自然数的立方等于 N 个连续奇数之和~

正确答案来了,在TC2下调试通过:

#include

int test(int j,int i){
int k,s;
s=0;
for (k=i;k<j;k+=2){
s+=k;
if (s>j) break;
if (s==j) return k;
}
return 0;
}

void out_list(int i, int k){
int j,x;
x=32;
for (j=i;j<=k;j+=2){
printf("%c%d",x,j);
x='+';
}
}

void main()
{
int x,y,i,j,k;
scanf("%d",&x);
y=x*x*x;
for (j=1;j<y;j+=2)
if((k=test(y,j))!=0){
printf("%d^3=%d=",x,y);
out_list(j,k);
printf("
");
break;
}
}

#include
int main()
{
int n,i,sum,f,l,r;
for(n=1;n<=15;n++)
{
sum=0;
for(i=1;i<=2*n-1;i=i+2)
{
sum=sum+(n*n-n+i);
}
if(n*n*n==sum)
{
printf("%d^3=",n);
f=sum/n;
if(f%2==1)
{
l=f-(n-1)/2*2;
r=f+(n-1)/2*2;
while(l<=r)
{
printf("%d+",l);
l=l+2;
}
printf("\b
");
}
else
{
l=(f-1)-(n-2)/2*2;
r=(f+1)+(n-2)/2*2;
while(l<=r)
{
printf("%d+",l);
l=l+2;
}
printf("\b
");
}
}
}
return 0;
}
好心人不留名,就读于贺州学院7—405,同校的来我和我交友吧

先分析规律有:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
5^3=21+23+25+27+29
6^3=31+33+35+37+39+41

可推出输入自然数n则:n^3=[n(n-1)+1]+…………+
后面为n个数。

编程如下:
#include<stdio.h>
int main()
{
int n,m,i;
printf("please input n:")
scanf("%d",&n);
m=n*(n-1)+1;
printf("%d^3 = ",n);
for(i=1;i<=n;i++)
{ printf("%d+",m);
m=m+2;
}
printf("\b\n");
}

注意\b的作用是退格,从而删掉最后一个数后面的加号。
输出结果为 列如n=4: 4^3 = 13+15+17+19
希望能帮到你。

我写了个,楼上的虽然简单但是基于找到了规律,像我这种笨脑袋可想不到,所以我写了一般化的,希望你喜欢哈~~
include<stdio.h>
void main()
{
int n,n3,i,j,k=0,f=0;
char q='\0';
scanf("%d",&n);
if(n<=0)
printf("data is error");
else
{
n3=n*n*n;
for(i=1;i<=n3;i+=2)
{
k=0;
for(j=i;j<=n3;j+=2)
{
k+=j;
if(k>=n3)break;
}
if(k==n3)break;
else if(k>n3)continue;

}
printf("%d*%d*%d=%d=",n,n,n,n3);
for(;f<n3;i+=2)
{
f+=i;
printf("%c%d",q,i);
q='+';
}
}
}

void func(int n)
{
int total = n*n*n;

for(int start=1; start<=n; start+=2)
{
int temp = 0;
for(int end=start;end<=n;end+=2)
{
temp += end;
if( temp>=total ) break;
}
if(temp==total)
{
for(int oddNumber=start;oddNumber<=end;oddNumber+=2)
{
printf("%d\r\n", oddNumber);
}
break;
}
}

}

==================
这里面就只有 if / for 语句啊。 temp, start, end 什么的是变量而已
int temp = 0; 是定义了一个变量啊

只要该数的立方 除3为基数就可以,算法如下:
for(i=1;1<=100;i++) //1--100的情况
{
if((i*i*i)%3==0 && (i*i*i/3)%2==1) printf("%d is:%d + %d + %d\n",i,i*i*i/3-2,i*i*i/3,i*i*i/3+2);
}

打完收工

有人问过:
http://zhidao.baidu.com/question/29840785.html?fr=qrl3


大冶市17292317668: C程序设计 任何一个自然数n的立方都等于n个连续奇数之和.要求输出相应的连续奇数相加的形式. -
宿阳雷米: #include<stdio.h> int main() { int n,i,sum,f,l,r; for(n=1;n<=15;n++) { sum=0; for(i=1;i<=2*n-1;i=i+2) { sum=sum+(n*n-n+i); } if(n*n*n==sum) { printf("%d^3=",n); f=sum/n; if(f%2==1) { l=f-(n-1)/2*2; r=f+(n-1)/2*2; while(l<=r) { printf("%d+",l); l=l+2; } ...

大冶市17292317668: c语言 任何一个自然数的立方等于连续奇数之和 -
宿阳雷米: 先分析规律有: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 5^3=21+23+25+27+29 6^3=31+33+35+37+39+41 可推出输入自然数n则:n^3=[n(n-1)+1]+…………+ 后面为n个数. 编程如下: #include<stdio.h> int main() { int n,m,i; printf("...

大冶市17292317668: 任意一个自然数m的立方均可表示为连续的奇数之和,例如 13 = 1,23 = 3 + 5,33 = 7 + 9 + 11 编写程序, -
宿阳雷米:[答案] 只做了正数的,负数的添加负号就可以 #include int main(void) { \x09int M; \x09int i=0; \x09coutM; \x09while (M!=0) \x09{\x09\x09 \x09\x09cout

大冶市17292317668: 编写一个C语言程序验证任一自然数n的立方=n个连续奇数之和.如:1的立方=1. 2的立方=3+5. 3的立方=7+9+11 -
宿阳雷米: 用C语言显得有些暴力,其实用数学求和公式就可以证明的,呵呵~~ 以下是我的程序,N不要输入的太大哦,望采纳! #include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h> int main() { int i,j,n; scanf("%d",&n); printf("%d^...

大冶市17292317668: c语言程序设计
宿阳雷米: #include<stdio.h> void main() { int x, y, i; printf("Input 0 to exit\n"); for(;;) { printf("Please input number: "); scanf("%d", &x); if(0 == x) break; else { y=x*x-x+1; printf("The cube of %d is %d \n",x,x*x*x); for(i=0; i<x; i++) { printf("%d ", y); y+=2; } printf("\n"); } } }

大冶市17292317668: c程序之验证尼科梅彻斯(Nicomachus)定律 -
宿阳雷米: #include "stdio.h" void main() { int n,n3,i,j,start,sum; printf("n="); scanf("%d",&n); n3=n*n*n; start=1; j=1; /*运行循环次数*/ while(1) {sum=0;for(i=0;iif(sum==n3)break; start+=2; j++; /*if(j>1000000)break; */ } printf("\n%d*%d*%d=%d",n,n,n,start); for(i=1;i printf("\n"); }

大冶市17292317668: C语言求两个数的和的立方 -
宿阳雷米: #include "stdio.h" float cube(float a,float b); void main() { float a,b; char ch; loop: printf("please input two numbers\n"); scanf("%f%f",&a,&b); printf("the result is %f",cube(a,b)); printf("Do you want to continue:(y\\s)\n"); getchar(); ch=...

大冶市17292317668: c语言求1到10000之间所有满足各位数字的立方和等于他本身的数,要求定义函数is() -
宿阳雷米: #include<stdio.h> int is(int n) {int s=0,t,k; k=n; while(n) {t=n%10; n/=10; s+=t*t*t; } return s==k; } int main() {int i; for(i=1;i<10001;i++) if(is(i))printf("%d\n",i); return 0; }

大冶市17292317668: C语言:给定一个三位整数(100 - 999),求它的每一位数的立方和 -
宿阳雷米: #include<stdio.h> #include<stdlib.h> #include<string.h> int cmp(const void *a, const void *b) {return *(char *) b - *(char *) a; } int main() {char str[20];int a;scanf("%d", &a);itoa(a, str, 10);qsort(str, strlen(str), sizeof(str[0]), cmp)return 0; }

大冶市17292317668: c语言编程求1到100之间所有整数的立方的和? -
宿阳雷米: #include <stdio.h> void main(){ int i,s=0; for(i=1;i<=100;i++) s+=i*i*i; printf("%d",s); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网