为什么第二个函数中的变量j不用判断是不是素数?
#include <stdio.h>int sushu(int a)
{
for(int i=2;i<a/2;i++)
{
if(a%i==0)
{
return 1;
}
}
return 0;
}
void fun(int a)
{
printf("%d=",a);
int j=2,m;
m=a;
while(j<a/2)
{
//sushu(j);
if(m%j==0)
{
printf("%d",j);
if(m/j>2)
{
printf("x");
}
m/=j;
}
else
{
j++;
}
}
}
int main(void)
{
int a;
int c;
scanf("%d",&a);
c=sushu(a);
if(c)
{
fun(a);
}
else
{
printf("%d=%d",a,a);
}
return 0;
} 第二个函数中的变量j不需要判断是否为素数,因为它的作用是用来寻找a的因子。在while循环中,变量j从2开始递增,每次判断m是否能被j整除。如果能整除,说明j是a的一个因子,我们打印出来,并且更新m的值为m/j。然后继续循环,直到j大于等于a的一半时结束。
在这个过程中,我们并不需要判断j是否为素数。因为如果j不是素数,那么它一定有一个小于j的因子k,那么m能被k整除,而不会被j整除。所以我们只需要判断m能否被j整除,就可以确定j是否是a的因子。而不需要判断j是否为素数。
页:
[1]