武则天主题曲冯宝宝:分解质因数那里错了?????

来源:百度文库 编辑:高校问答 时间:2024/05/04 05:28:30
#include<stdio.h>
void main()
{
int a,b=2;
scanf("%d",&a);
while(a>1)
{
if(a%b==0)
a/=b;
else
b++;
a/=b;
}
printf("这里怎么写");
}

while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}
while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}
while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}
while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}
while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}

while(a>=1)
{
if(a%b==0)
a/=b;
else
b++;
printf("%d",b);
}

楼主的程序实现的不是分解质因数,仅仅是分解因数
请gztjzxj04不要反复强调这种错误
我的程序先生成一个素数数组,分解质因数时依次从这个数组里面取元素
但我的程序只限于分解比较小的数,而且会出现程序异常的错误

unknown software exception(0xc0000094),位置为0x004011be
unknown software exception(0xc0000094),位置为0x004011be
unknown software exception(0xc0000027),位置为0x7c80e0b9

#include <stdio.h>
#include <math.h>
#define LB 2
#define UB 100

void create_prime_array(int *p){
int k,i,j;
for(j=LB;j<=UB;j++){
k=sqrt(j);
for(i=2;i<=k;i++) /*i as divisor*/
if(j%i==0) break;
if(i>k) {*p=j;p++;} /*save prime j to an element of array which
pointer p pointed*/
}/*for*/
}

void prime_factor(int a, int *p){
for(;a!=0;p++){
while(1){
if(a%*p==0) {printf("%d\t",*p);a=a/(*p);}
if(a%*p!=0) break;
}/*repeat*/
}/*for*/
}

void main(){
int x,a[50]={0};
puts("Enter an integer >2");
scanf("%d",&x);
create_prime_array(a);
prime_factor(x,a);
}