代码之家  ›  专栏  ›  技术社区  ›  bbalchev

根据整数的素因子对其进行排序

  •  1
  • bbalchev  · 技术社区  · 12 年前

    我有点纠结于如何根据整数的最大素因子按升序对其进行排序。例如,我们有3和8。顺序应该是:8,3,因为8的素因子(2)小于3的素因子。如果我们对9和27这样的两个数字有相同的最大素数,那么较小的数字应该是第一个。按此顺序:9,27

    好吧,这是我的代码,但它需要一些修改。

    long long sort(long long integers[], long long primes[]) {
        /* loop variables */
        int i, j;
        /* temporary variable */
        long long tmp;
    
        for (i = (SIZE - 1); i > 0; i--) {
            for (j = 1; j <= i; j++) {
                if (integers[j-1] > integers[j]) {
                    tmp = integers[j-1];
                    integers[j-1] = integers[j];
                    integers[j] = tmp;
                }
            }
        }
    }
    

    同样重要的是要提到整数[i]的最大素因子被存储为素数[i]。底漆已经全部设置好了,这件事只需要正确的排序。

    我希望你能帮助我。

    谢谢。:)

    1 回复  |  直到 12 年前
        1
  •  3
  •   John Zwinck    12 年前

    当然你只需要使用 primes 在某处在您当前的代码中,您根本没有使用该变量,而且它应该放在哪里似乎很清楚。

    额外提示:查找标准的C库函数 qsort .