菜菜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#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;
}

有错请评论

posted on 2018-03-27 00:49  好吧,就是菜菜  阅读(337)  评论(0编辑  收藏  举报