【题目】求一个正整数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;
}