编写一函数,输出整数m的全部素数因子 ;例如m=120的因子为 2,2,2,3,5
不懂这道题用函数怎么写啊~
谢谢大家帮个忙 麻烦了啊
[此贴子已经被作者于2007-5-7 16:21:36编辑过]
编写一函数,输出整数m的全部素数因子 ;例如m=120的因子为 2,2,2,3,5
不懂这道题用函数怎么写啊~
谢谢大家帮个忙 麻烦了啊
[此贴子已经被作者于2007-5-7 16:21:36编辑过]
#include <stdio.h>
#include <conio.h>
const int N=6;
const int M=8;
void main()
{ int a[N][M];
int k=0, m=0, v=1;
int direction = 0; //0:right; 1:down; 2:left; 3:up
while(v<=N*M)
{ a[k][m] = v;
v++;
switch(direction)
{
case 0: m++;
if(m==M-1-k)
direction = 1;
break;
case 1: k++;
if(k==N-1-(M-1-m))
direction = 2;
break;
case 2: m--;
if(m==N-1-k)
direction = 3;
break;
case 3: k--;
if(k==1+m)
direction = 0;
break;
}
}
for(k=0; k<N; k++)
{
for(m=0; m<M; m++)
printf("%3d", a[k][m]);
printf("\n");
}
}
我给出一个比较差的算法你看看,我也初学者,暂时还没想到好的算法呢!
#include <stdio.h>
#include <conio.h>
const int N=6;
const int M=8;
void main()
{ int a[N][M];
int k=0, m=0, v=1;
int direction = 0; //0:right; 1:down; 2:left; 3:up
while(v<=N*M)
{ a[k][m] = v;
v++;
switch(direction)
{
case 0: m++;
if(m==M-1-k)
direction = 1;
break;
case 1: k++;
if(k==N-1-(M-1-m))
direction = 2;
break;
case 2: m--;
if(m==N-1-k)
direction = 3;
break;
case 3: k--;
if(k==1+m)
direction = 0;
break;
}
}
for(k=0; k<N; k++)
{
for(m=0; m<M; m++)
printf("%3d", a[k][m]);
printf("\n");
}
}
不好意思,发错代码了,这个才是的!
晕,怎么搞的啊,那代码老发不上去的。
说下我的思路吧。
i的初值为2,先判断m%i是否为0,若为0,i ++,然后执行m=m/i,然后输出m,无限次循环,直到m=1时终止循环。
循环.........
索数不包括1和自己啊??
#include <stdio.h>
int main()
{
int i,n,m,j,p=2;
scanf("%d",&m);
j=m;
printf("ss is :");
for(i=2;i<j;i++)
{
n=m%i;
if(n==0)
{
m/=i;
printf("%d ",i);
i--;
}
p++;
}
if(i==p)
printf("none\n");
getch();
}
这个可以,不过好象效率不怎么样,可以改进,我今天没时间了,以后上来再看下。