编程题: 1、写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一
个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度) 2、编写一个Identify的分配、释放的函数,为1-10000之间的自然数。 from csdn check it out http://community.csdn.net/Expert/topic/3711/3711810.xml?temp=.2223017
----------------解决方案--------------------------------------------------------
第一个题做过
第二个题中的Identify分配是什么意思?
----------------解决方案--------------------------------------------------------
分配质数,释放一系列分解的因数
Identify()可以被认为是isPrime()的宏泛化
----------------解决方案--------------------------------------------------------
第一题,有点乱,没运行,不知道对不对?
#include<stdio.h>
main()
{int n,a[20],i,l=0,j,k,flag1=0,flag2=0,m;
printf("input a number(<100):");
scanf("%d",&n);m=n;
while(2)
{ for(k=2;k<n;k++)
{j=n/k;
flag1=0;
for(i=2;i<j;i++)
if (j%i==0) break;
if (i>=j) flag1=1;
if(flag1==1) {a[l++]=j;break;}
}
n=n/k;
flag2=0;
for(i=2;i<n;i++)
if (n%i==0) break;
if (i>=n) {a[l++]=n;break;}
}
printf("%d=",m);
for(i=0;i<l;i++)
{printf("%d",a[i]);
if (i!=l-1) printf("*");
}
printf("\n");
getch();
}
运行了一下,不对,没时间改,下次有时间两来改!
[此贴子已经被作者于2005-1-13 21:27:00编辑过]
----------------解决方案--------------------------------------------------------
改了一部分:
#include<stdio.h>
main()
{int n,a[20],i,l=0,j,k,flag1=0,flag2=0,m;
printf("input a number(<100):");
scanf("%d",&n); m=n;
while(2)
{ for(k=2;k<n;k++)
{if(n%k==0)
for(i=2;i<k;i++)
if (k%i==0) break;
if (i>=k) flag1=1;
if(flag1==1) {a[l++]=k;break;}
}
n=n/k;
flag2=0;
for(i=2;i<n;i++)
if (n%i==0) break;
if (i>=n) {a[l++]=n;break;}
}
printf("%d=",m);
for(i=0;i<l;i++)
{printf("%d",a[i]);
if (i!=l-1) printf("*");
}
printf("\n");
getch();
}
----------------解决方案--------------------------------------------------------
这样可以了: #include<stdio.h> main() {int n,a[20],i,l=0,j,k,flag1=0,flag2=0,m; printf("input a number(<100):"); scanf("%d",&n); m=n; while(2) { for(k=2;k<n;k++) { flag1=0;flag2=0; if(n%k!=0) continue;
for(i=2;i<k;i++) if (k%i==0) break; if (i>=k) flag1=1; if(flag1==1) {a[l++]=k;flag2=1;break;} } if(flag2) n=n/k;
for(i=2;i<n;i++) if (n%i==0) break; if (i>=n) {a[l++]=n;break;}
} printf("%d=",m); for(i=0;i<l;i++) {printf("%d",a[i]); if (i!=l-1) printf("*"); } printf("\n"); getch(); }
----------------解决方案--------------------------------------------------------
看了一下csdn中的那个贴,实在是小屋见大屋!
第二题还是不懂要干什么?
----------------解决方案--------------------------------------------------------
what
----------------解决方案--------------------------------------------------------