#include <stdio.h> #include<iostream> #include <string.h> #include<memory.h> using namespace std; /** *对正整数a进行因式分解 *如果x能整出a,那么存在正整数q,使得x*q=a */ const int N = 100000; int main() { int a = 27; int b[N] = { 0 }; //memset(b, 0, sizeof(b)); b[1] = 1; //a和1 b[a] = 1; //这里可以减少循环次数 for(int i = 2; i < a - 1; i++) { if(b[i]) continue; //i*q=a if(a % i == 0) { int j = i; while (a % j == 0 && b[j] == 0 && b[a / j] == 0) { b[j] = 1; b[a / j] = 1; j = j + i; } } } for(int i = 1; i <= a; i++) { if(b[i]) { printf("%d ", i); if(i % 20 == 0) printf("\n"); } } printf("\n"); return 0; }
有错请评论