#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开始到根号n结束,判断是否能够整除,如果能就输出,如果没有输出就是素数,for循环就行
#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;
}