C语言 将一个正整数分解质因子 例如:输入90,打印出90=2*3*3*5

2024年11月21日 21:22
有2个网友回答
网友(1):

#include void main(){  int n, i;  printf("Enter a positive integer: ");  scanf("%d", &n);  printf("%d=", n);  i = 2;  while (i < n)  {    if (n % i == 0)    {      printf("%d*", i);      n /= i;    }    else      ++i;  }  printf("%d\n", n);} 注:这是一个更简洁的写法,我提出来供大家参考。其实不需要测试 i 是否质数。假如 i 是合成数,比 i 小的 i 的质因数早就除掉了。而且 i < n 的循环用 while 不用 do-while,最后不需要倒退擦掉一个 *。

网友(2):

#include
int prime(int n)
{
int i;
if(n<2)return 0;
for(i=2;i if(n%i==0)return 0;
return 1;
}
void main()
{
int n,i;
printf("输入一个>2的正整数:");
scanf("%d",&n);
printf("%d=",n);
i=2;
do
{
if(n%i==0&&prime(i))
{
printf("%d*",i);
n/=i;
}
else i++;
}while(n>1);
printf("\b");
printf(" \n");

}