第六周 1 分解质因数(5分)
题目内容:
每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。
现在,你的程序要读入一个[2,100000]范围内的整数,然后输出它的质因数分解式;当读到的就是素数时,输出它本身。
提示:可以用一个函数来判断某数是否是素数。
输入格式:
一个整数,范围在[2,100000]内。
输出格式:
形如:
n=axbxcxd
或
n=n
所有的符号之间都没有空格,x是小写字母x。abcd这样的数字一定是从小到大排列的。
输入样例:
18
输出样例:
18=2x3x3
时间限制:500ms内存限制:32000kb
1 #include <stdio.h> 2 3 int isP(int p); //判断是否为素数 4 5 int main() 6 { 7 int shuru; //输入的数 8 int m; 9 int geshu = 1; //是否为第一位 10 scanf("%d", &shuru); //输入一个整数 11 printf("%d=",shuru); 12 for ( m=2; m<=shuru; ) { 13 if ( (shuru % m == 0) && isP(m) ) { //输入的数可以被m整除,且m为素数 14 if( geshu != 1) //如果不是第一个数 15 printf("x"); //输出“x” 16 printf("%d", m); 17 shuru = shuru / m; 18 geshu++; 19 } else m++; //这时候才+1,保证假如shuru可以被m整除超过一次,可以输出所有的。 20 } 21 return 0; 22 } 23 24 int isP(int m) 25 { 26 int n; 27 int isprime = 1; 28 for (n=2; n<m/2; n++) { 29 if ( m%n == 0){ 30 isprime = 0; 31 break; 32 } 33 34 } 35 return isprime; 36 }