コード例 #1
0
ファイル: mert_functions.py プロジェクト: glogou/tmp_testing
def mert_function(target_num, factor_list_option ):

    global g_call_cnt
    # we need to set this, because it is global variable, maybe other function may change it.
    g_call_cnt = 0

    assert(target_num > 1)

    # Get product factors using count_number_prime_product_recursive(...)
    begin_list = [1]
    factors_his = [0]* MAX_NUM_FACTORS
    print 'target_num %d'%(target_num)
    primes_list, liouvi_power_prime_dict = get_factor_list(target_num, factor_list_option)
    print 'num of primes_list %d'%(len(primes_list))

    factors_his, factors_his_cur_n_down = count_number_prime_product_recursive(begin_list, primes_list, target_num, factors_his, factor_list_option, liouvi_power_prime_dict)
    print target_num, factors_his, factors_his_cur_n_down

    odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm = get_even_odd_cnt_from_factors(factors_his)
    print 'target_num %d, odd_cnt %d, even_cnt %d, 1 is not included'%(target_num, odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm)

    # mobi(n) even factor is 1, odd factor is -1
    # we need to add 1 because mobi(1) = 1 which is not included in our factor list
    parity = even_prime_factors_cnt_comm - odd_prime_factors_cnt_comm + 1
    return parity, factors_his, odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm
コード例 #2
0
ファイル: mert_functions.py プロジェクト: glogou/tmp_testing
def mert_function_access_a_node(target_num, begin_list, factor_option = g_TRUE_PRIME):

    global g_call_cnt
    # we need to set this, because it is global variable, maybe other function may change it.
    g_call_cnt = 0

    assert(target_num > 1)

    # generate primes_list up to target_num,
    primes_list, liouvi_power_prime_dict = get_factor_list(target_num, factor_option)
    print 'num of primes_list %d'%(len(primes_list))

    check = is_valid_list(target_num, primes_list, begin_list)
    if(check == False):
        print 'Not valid list: ', begin_list
        return None, []

    # Get product factors using count_number_prime_product_recursive(...)
    factors_his = [0]* MAX_NUM_FACTORS
    print 'target_num %d'%(target_num)

    factors_his, factors_his_cur_n_down = count_number_prime_product_recursive(begin_list, primes_list, target_num, factors_his, factor_option, liouvi_power_prime_dict)
    print target_num, factors_his, factors_his_cur_n_down

    odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm = get_even_odd_cnt_from_factors(factors_his)
    print 'target_num %d, odd_cnt %d, even_cnt %d, 1 is not included'%(target_num, odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm)

    # mobi(n) even factor is 1, odd factor is -1
    parity = even_prime_factors_cnt_comm - odd_prime_factors_cnt_comm
    return parity, factors_his
コード例 #3
0
ファイル: mert_functions.py プロジェクト: glogou/tmp_testing
    return parity, factors_his

# ===============================================================================================
if __name__=='__main__':

    target_num, factor_list_option, log_save_option = mert_parse_arguments()
    mert_settings.g_log_save_option = log_save_option

    # debug trace option
    from mert_constants import g_ON_SCREEN_FULL_DEBUG_TRACE
    mert_settings.g_debug_print_option = g_ON_SCREEN_FULL_DEBUG_TRACE

    from mert_constants import g_LOG_YES

    # generate primes_list up to target_num,
    primes_list, liouvi_power_prime_dict = get_factor_list(target_num, factor_list_option )

    print 'num of primes_list %d'%(len(primes_list))

    # Get product factors using count_number_prime_product_recursive(...)
    begin_list = [1]
    factors_his = [0]* MAX_NUM_FACTORS
    print 'target_num %d'%(target_num)
    g_call_cnt = 0
    factors_his, factors_his_cur_n_down = count_number_prime_product_recursive(begin_list, primes_list, target_num, factors_his, factor_list_option, liouvi_power_prime_dict)
    print target_num, factors_his, factors_his_cur_n_down

    odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm = get_even_odd_cnt_from_factors(factors_his)
    print 'target_num %d, odd_cnt %d, even_cnt %d, 1 is not included'%(target_num, odd_prime_factors_cnt_comm, even_prime_factors_cnt_comm)

    if(factor_list_option == g_LIOUVI_FACTOR):