下面的代码来自之前的一个人写的博客,对于是否输出*用n/j>2来判断,我改成n>j,试了许多数也对,希望有人能给我举出反例或者告诉我n>j是否可行
#include<stdio.h>
#include<math.h>
int Isprime(int n) //函数功能--判断是否为素数
{
for (int i = 2; i<sqrt(n); i++)
if (n % i == 0) return 1;
return 0;
}
void fun(int n) //函数功能--质因数分解
{
int i = 0, j;
int m = n;
for (j = 2;j < m/2; j++) //从小到大寻找n的因数
while(n % j == 0) //当n%j(因数)== 0时,继续分解
{
printf("%d",j);
if(n/j>2) //n>j我试了好多感觉也对
printf("*");
n /= j;
}
}
int main()
{
int n;
int c;
scanf("%d", &n); //输入要分解的数
c = Isprime(n); //判断是否为素数
if (c) fun(n); //如果不是素数则进行分解
else printf("it is a prime\n"); //如果是素数则不用分解
}
//输入90,输出2*3*3*5