4 6关于#分解质因数#的问题,如何解决?

输入一个100以内的正整数,将其分解质因数后输出。如输入60,输出60=223*5。

(1)问题的解决代码

#include <math.h>
#include <stdbool.h> //包含bool变量的头文件
#include <stdio.h>

//定义判断质数的函数
bool is_prime(int n)
{
    if (n == 2 || n == 3)
    {
        return true;
    }
    if (n <= 1 || n % 2 == 0 || n % 3 == 0)
    {
        return false;
    }
    int N = (int)sqrt(n);
    int i;
    for (i = 5; i <= N; i++) //对整数n,如果其在2到sqrt(n)之间没有因子那它就是质数
    {
        if (n%i == 0)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    long int n; //使用long int类型以输入更大的整数
    scanf("%d", &n);
    long int i;
    int count = 0;
    for (i = 1; i <= n; i++)
    {
        if (n%i == 0 && is_prime(i))
        {
            if (count == 0)
            {
                printf("%d", i);
            }
            else
            {
                printf("*%d", i);
            }
            n /= i;
            i--;  //为了输出多重的质因子,如2*2*2
            count = count + 1;  //便于判断质因子前是否需要输出乘号
        }
    }
    printf("\n");

    return 0;
}

(2)程序运行结果截图
运行结果1:

img


运行结果2:

img

img


#include<stdio.h>
void main(){
int m=0,n=2;
printf("请输入待分解整数:");
scanf("%d",&m);
printf("%d=",m);
while(m>=n){
if(m%n==0){//n是m的质因数,也是输入数的质因数
printf("%d",n);
if(m!=n)
printf("*");
else
printf("\n");
m=m/n;//查找m/n的质因数,也是输入数其余的质因数
}else{
++n;
}
}
}
#include <stdio.h>
int main()
{
    int n;//合数
    int i = 2;//质因数
    printf("请输入待分解整数:");
    scanf("%d", &n);
    while (n != 1)
    {
        while (n % i == 0)//能整除,说明是质因数
        {
            printf("%d", i);
            n = n / i;//赋予除完质因数的值,来继续找

            if (n != 1)//*记得输出,这样写可以避免最后多输出一个*
            {
                printf("*");
            }
        }
        i++;
    }
    return 0;
}
#include<stdio.h>
int main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
 {
  while(n!=i)
  {
   if(n%i==0)
   { printf("%d*",i);
    n=n/i;
   }
   else
    break;
  }
}
printf("%d",n);
return 0;
}

写法及注释如下:

//编程:Code_流苏
#include<iostream>
using namespace std;

int main()
{
    //定义正整数n,表示为两个不同的质数的乘积
    int n;
    //输入n的值
    cin>>n;
    //判断素数并输出两者中较大的那个质数
    for(int i=2;i<=n;i++)
    {
        if(n%i==0)
        {
         cout<<n/i;
         break;
        }
        
    }
    cout<<endl;
    return 0;
}

如有帮助,还请采纳!谢谢!