从键盘任意输入一个整数m,若m不是素数,则对m进行质因数分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,否则输出”It is a prime number”。例如,用户输入90时,程序输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出”It is a prime number”。 输入提示信息:”Input m:” 输入格式:”%d” 输出格式: 是素数时输出”It is a prime number\n” 否则输出用”%d = “,”%d * “ 运行示例1: Input m:90↙ 90 = 2 * 3 * 3 * 5 运行示例2: Input m:13↙ It is a prime number
intmain(void) { int m; int a[100], i = 0; printf("Input m"); scanf("%d", &m); if (!is_prime(m)) { int current = m; for (int j = 2;!is_prime(current);) { if (is_prime(j)) { if (current % j == 0) {//找到了一个 current = current / j; a[i] = j; i++; j = 2; } else { j++; } } else { j++; } if (is_prime(current)) { a[i] = current; } } selection(a, i); printf("%d = ", m); for (int k = 0;k <= i;k++) { if (k == i) { printf("%d", a[k]); } else { printf("%d * ", a[k]); } } } else { printf("It is a prime number\n"); } return0; }
intis_prime(int m) { for (int i = 2;i <= sqrt(m);i++) { if (m % i == 0) { return0;//不是质数 } } return1; }
voidselection(int a[], int n) { for (int i = 0;i < n - 1;i++) { int min = i, temp; for (int j = i + 1;j < n;j++) { if (a[j] < a[min]) { min = j; } } if (min != i) { temp = a[i]; a[i] = a[min]; a[min] = temp; } } }