1
分解质因数(5分)
题目内容:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。
提示:可以用一个函数来判断某数是否是素数。
输入格式:
一个整数,范围在[2,100000]内。
输出格式:
形如:
n=axbxcxd
或
n=n
所有的符号之间都没有空格,x是小写字母x。abcd这样的数字一定是从小到大排列的。
输入样例:
18
输出样例:
18=2x3x3
时间限制:500ms内存限制:32000kb
#include <stdio.h>
int panduan(int a){
int b;
int c;//c=1是素数,c=0不是素数
for(int i=2;i<a+1;i++) {
b=a%i;
if(b==0){
if(a==i){
c=1;
break;}
if(a!=i){
c=0;
break;}
}
}return c;
}
//↑对素数的判断,1为是素数,0为不是素数
int main()
{
int a;
scanf("%d",&a);
int b;
int c;
b=panduan(a);
if(b==1){
printf("1x%d",a);
}
//↑对于素数的拆分、
if(b==0){
int i;
for(i=2;i<100000;i++){
while(a!=1){
c=a%i;
if(c==0){
printf("%d",i);
a=a/i;
if(a!=1){
printf("x");
}
}
if(c!=0){
break;
}
}
}
}
return 0;
}
先对数字是否为素数进行判断,是素数则直接表达。
不是素数则开始拆,直至将数字拆成1为止。