c语言大神止步,求一个正整数的所有因子,高效一点的算法,不用暴力求解

就是听说有个素因子筛选法什么的,求解释

第1个回答  2013-06-24
int prime_list[] = {2, 3, 5, 7, 11, .....};  // 事先准备好的质数表
int prime_count = xxx;   // 质数表中的元素个数

int zhidao_561722153(int num) {
    int i = prime_count - 1;
    int max = prime_list[i];
    if (num > max * max) {
        print("输入的数字太大,超过检查范围\n");
        return -1;
    }
    print("%d的因子有: %d, ", num, num); // num本身也是因子
    for (; i>=0; i--) {
        if (num % prime_list[i] == 0) {  // 模为0则为因子
            print("%d, ", i);
        }
    }
    print("%d\n", 1);   // 1也是因子
    return 0;
}

第2个回答  2013-06-24
我不知道啥子算法,下面是我的思路
#include "stdio.h"
#include "stdlib.h"
main()
{
int n, i;
printf("输入一个数:\n");
scanf("%d", &n);
printf("此数分解因数后%d=", n);
for (i = 2; i <= n; i++)
while (n != i)
{
if (n % i == 0)
{
printf("%d*", i);
n = n / i;
}
else
break;
}
printf("%d", n);
getchar();
}
分解成因素,祝你愉快!
第3个回答  2013-06-24
先用筛法做出素数,然后用这些素数来分解这个整数追问

详解一点吧,麻烦麻烦

追答

就是先准备素数表,然后挨个尝试到你要计算的那个数的平方根

相似回答