如何在我的答案中获得乘号(质因数分解)
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'。
我正在编写一个程序,用户输入一个介于 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'。