C语言求一个数的所有奇素数

来源:百度知道 编辑:UC知道 时间:2024/05/15 18:45:59
编写函数void fun(int k,int *p),功能是:将参数k(2≤k≤32767)所有的
不相同质因子升序写入p所指的一维数组中,以-1作为所有质因子的结束标志。
例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。
我编的函数是:
void fun(int k,int *p)
{
int b[17]={0},*q=b,m,i,j;
for(j=2;j<=k;j++){
m=sqrt(j);
for(i=2;i<=m;i++)
if(j%i==0) break;
if(i>m) *q++=j;
*q=0;
}
for(q=b;*q!=0;q++)
if(k%*q==0) *p++=*q;
*p=-1;
}
但是运行不出来啊!!!请那位高人指点一下~~谢了
不需要写新的程序,麻烦看一下我的错到哪里了!

#include<stdio.h>
#include<math.h>

int fun(int k,int *p)
{
int i,j,m,n=0;

for(i=2;i<=k;i++)
{
if(k%i!=0)
{
continue;
}
m=sqrt(i);
for(j=2;j<=m;j++)
{
if(i%j==0)
break;
}
if(j>m)
p[n++]=i;
}
return n;
}

void main()
{
int a[30],n,i;

printf("输入一个整数:\n");
scanf("%d",&n);
n=fun(n,a);

printf("质因子升序:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}

输入200,输出:2 5
输入27720,输出:2 3 5 7 11
输入101,输出101

补充:
看程序(尤其是烂程序),还不如重写了!