最高素数因素

时间:2014-04-17 09:24:04

标签: c algorithm

尝试找到数字的最高素数因子。在C中编写算法。 这是我的代码

#include <stdio.h>
#include <stdlib.h>

long long largestPrimeFactor(long long param);
long long squareRootOrClosest(long long param);
long long checkForHighestPrime(long long param);

long long main(){
    printf("%lld\n",largestPrimeFactor(600851475143L) );
    return EXIT_SUCCESS;

}

long long largestPrimeFactor(long long  param){
    long long k = squareRootOrClosest(param);
    long long l = checkForHighestPrime(k);
    return l;

    }

long long squareRootOrClosest(long long param){
    long long i =0;
    long long s =0;

    for (long long j = 1; j*j <param; j++){
        s = j;
    }
    return s;
}

long long checkForHighestPrime(long long param){
    long long d = 0;
    long long h = 0;

    for (long long i = 1; i <param/2; i++){

        d = param%i;

        if(d == 0){
            h = d;
        }
    }
    return h;
}

我得到的只是一个0

我错过了什么?

1 个答案:

答案 0 :(得分:1)

长时间使用。并将数字编辑为600851475143L

#include <stdio.h>
#include <stdlib.h>

long largestPrimeFactor(long long param);
long squareRootOrClosest(long long param);
long checkForHighestPrime(long param);

int main(){
    printf("%I64d\n",largestPrimeFactor(600851475143) );
    return EXIT_SUCCESS;

}

long largestPrimeFactor(long long param){
    long k = squareRootOrClosest(param);
    long l = checkForHighestPrime(k);
    return l;

    }

long squareRootOrClosest(long long param){
    long s =0;

    for (long long j = 1; j*j <param; j++){
        s = j;
    }
    return s;
}

long checkForHighestPrime(long param){
    long d = 0;
    long h = 0;

    for (long i = 2; i <param/2; i++){

        d = param%i;

        if(d == 0){
            h = i;
        }
    }
    return h;
}