编写一个程序,将输入的整数分解为质因数的乘积,例如输入22,输出22=2*11

2025-06-28 11:57:10
推荐回答(2个)
回答1:

逻辑有些问题,我修改好了:

#include 
int main()
{
  int n,m;
  int i,j,k=0,jugde=1;
  int a[100];
  scanf("%d",&n);
  for(i=2;i<=n;i++)
  {
    for(j=2;j    {
      if(i%j==0)
      {
        jugde=0;
        break;
      }
    }
    if(jugde!=0)
    {
      a[k]=i;
      k++;
    }
    
    jugde = 1;
  }
  /*上一步为将1到n的质数储存在数组a中*/
  {
   int x;
   for(x=0;x   printf("%d ",a[x]);
   printf("\n");
  }
  
  printf("%d=",n);
  for(i=0;i  {
    if(n%a[i]==0)
    {
      m=n/a[i];
      printf("%d",a[i]);
      break;
    }
  }
/*上一步为输出第一个质因数*/
  for(i=0;i  {
    if(m%a[i]==0)
    {
      while(m%a[i]==0)
      {
       printf("*%d",a[i]);
       m=m/a[i];
      }
    }
    
    if(m == 1)
     break;
  }
  printf("\n");
  return 0;
}

回答2:

for(i=0; i {   
  if(n % a[i] == 0)  
  {      
   m = n / i ; 
   printf("%d",a[i]);   
   break;  
  }  
 } 
 这个循环中第一个i必然是0, 肯定报错啊!