如何在我的答案中获得乘号(质因数分解)

How to get multiplication sign in my answer (prime factorization)

我正在编写一个程序,用户输入一个介于 2 和 1000000 之间的正整数,如果它是一个素数,它会打印 "The number is a prime number",如果它不是一个素数,它会打印因式分解号码。我试图在我的因素之间加上乘号,但无法弄清楚! (即:用户输入 24,程序输出 2 2 2 3,我希望它输出 2x2x2x3)。有任何想法吗?我已经尝试了很久

#include <stdio.h>
int main()
{
  int N, a, divide, flag=0;
 printf("Please enter a positive integer ");
   scanf("%d",&N);
   if (N<2||N>1000000)
  {
    printf("Error!");
    return 0;
  }
  for(a=2;a<=N/2;++a)
 {
  if(N%a==0)
  {
      flag=1;
      break;
  }
 }
 if (flag==0)
  printf("The number %d is a prime number.", N);
 else
  {
     printf("The number %d is not a prime number.\nThe prime factors of %d are:",N, N);

divide = 2;

 while(N!=0&&flag==1){
    if(N%divide!=0)
        divide = divide + 1;
    else {
        N = N / divide;
        printf("%d",divide);
        if(N==1)
            break;
        }
    }
 }

  return 0;
}

如果你扭转问题,你需要在你的数字之前打印一个"x" ,除了第一个。

所以只需要一个int first=1;。在循环中添加:

if (first) {
  first = 0; // no more 1st loop
} else {
  printf("x"); // print a "x" before printing the next number
}

只需更改您的 printf:

printf("%d%c", divide, (N > 1) ? 'x' : '\n');

如果您在最后一次迭代,则打印 '\n'(回车符 return),如果不是,则打印 'x'。