【c语言】求一个正整数n的所有质因数

【题目】求一个正整数n的所有质因数


int main()
{
    int n,m,p=0;
    m=sqrt(n);
    printf("请输入一个正整数n="); scanf("%d",&n);
    for(int i=2;i<=n/2;i++)
    {
        if(n%i==0)//找出该数的因子 
          p=i; 
          for(int k=2;k<=m;k++)//判断因子是不是素数 
          {
              if(p%k==0) break;
              if(k>m&&p>1) printf("%d",p);
          }
    }
     
     return 0;
 } 

哪里有问题求解

供参考:

#include <stdio.h>
#include <math.h>
#include <cmath>
int main()
{
    int n, m, p = 0;
    //m = sqrt(n);     //修改
    printf("请输入一个正整数n=");
    scanf("%d", &n);
    for (int i = 2; i <= n / 2; i++)
    {
        if (n % i == 0) //找出该数的因子 
        {
            //p = i;    //修改
            for (m = 2; m < i; m++)//判断因子是不是素数 
            //for (int k = 2; k <= m; k++)  修改
            {
                if (i % m == 0) break;
            }
            if (m == i)  //if (k > m && p > 1) 修改
                printf("%d ", i);
        }
    }
    return 0;
}

用函数来判断素数,这么改:

#include <stdio.h>
int isprime(int n)
{
    int i;
    if (n <= 3)  return n > 1;
    for (i = 2;i * i <= n;i++)
        if (n % i == 0) return 0;
    return 1;
}
int main()
{
    int n;
    printf("请输入一个正整数n=");
    scanf("%d", &n);
    for (int i = 2; i <= n / 2; i++)
    {
        if (n % i == 0)
        {
            if (isprime(i))
                printf("%d ", i);
        }
    }
    return 0;
}