C语言编程:判断是否是素数,如果不是,则由小到大打印其所有的整数因子

2025-01-05 06:21:48
推荐回答(3个)
回答1:

#include
#include
void main()
{
int i,x,flag=0;
scanf("%d",&x);
//判断是否为质数
for(i=2;i<(int)sqrt(x);i++)
if(x%i==0)
{
flag=1;
break;
}
//1既不是质数也不是合数
if(x==1)
{
printf("not a prime or composite number!\n");
}
//是质数
else if(!flag)
{
printf("is a prime!\n");
}
//是合数
else
{
printf("is a composite number!\nfactors:\n");
//flag标签用于输出格式,第一个数字不需要输出逗号
//后面的数字都要输出逗号
flag=1;
for(i=2;i {
//如果是因数则输出
if(x%i==0)
{
if(flag)
{
printf("%d",i);
flag=0;
}
else
printf(",%d",i);
}
}
printf("\n");
}
}

回答2:

从2开始到根号n结束,判断是否能够整除,如果能就输出,如果没有输出就是素数,for循环就行

回答3:

#include

int isprime(int n)
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}

void primeprint(int n)
{
int i,flag=0;
for(i=2;i{
if(n%i==0)
{
if(flag==0)

printf("%d", i);

else

printf(",%d", i);

flag=1;

}

}
printf("\n");
}

int main(void )
{
int n;
scanf("%d", &n);
if(isprime(n))
printf("没有因子,是素数\n");
else
primeprint(n);
return 0;
}