请楼上的注意下我题目输出的格式.
倚天照海花无数,流水高山心自知。
自己也瞎写了一个,
#include<stdio.h>
main()
{
int i=2,flag=1;long m;
printf("input the number:");
while(m)//m没有初始化
{
scanf("%ld",&m);
if(m)
printf("%ld=",m);
while(m!=1)
{
flag=1;
for(i=2;i<=m&&flag==1;i++)
if(m%i==0)
{
m=m/i;
printf("%d*",i);
flag=0;
}
}
printf("\b \n");
}
getch();
return 0;
}
好巧妙.
n=1:
a[0]=1
a[1]=10;
a[2]=a[1]+a[0]=11
i=3;
n=2:
a[3]=100;
a[4]=a[3]+a[0]=101;
a[5]=a[3]+a[1]=110;
a[6]=a[3]+a[2]=111;
j=7;
n=3:
a[7]=1000
a[8]=a[7]+a[0]=1001;
a[9]=1010
a[10]=1011;
a[11]=1100;
...
程序大都没错,只是越界.我改了一下.
#include"stdio.h"
#include"math.h"
main()
{
long a[1500],i,j=1,n;
a[0]=1;
for(n=1;n<=9;n++) //如果这里9是任意数N,不过N不能超过9了,因为long表示不出来.
{
a[j]=(long)pow(10,n);
for(i=0;i<j;i++)
a[j+i+1]=a[j]+a[i];
j=j*2+1;
}
for(i=0;i<1023;i++) //那这里就是2^(N+1)-1
printf("%ld\n",a[i]);
getch();
}