【问题标题】:Greplin Programming Challenge Lv.2Greplin 编程挑战 Lv.2
【发布时间】:2011-02-16 20:59:17
【问题描述】:

挑战位于here

好的,所以我想出了要拨打的电话号码,我只是不明白如何处理结果(这可能与我在数学方面的有限经验有关)

所以我计算出的第一个 Prime 斐波那契数大于电话中给出的数

所以让我们呼叫那个号码 x

但现在我不明白“素数除数之和 +1”

据我所知,X 是素数,所以素数除数是 1 和 X

除非它的 (x+1) 找到除数(数组 D)然后找到 D 中的素数(数组 Pd)

Pd1+Pd2=答案

我是在正确地吠叫吗?

到目前为止我的源代码(如果需要,我可以提供主要代码,我假设它不是)

 private static long CalcPassword2(long p)
        {
            p++;
            List<int> factors = new List<int>();

            for (int i = 1; i <= p; i++)
            {
                if (p % i == 0)
                    if (isprime(i))
                    {
                        factors.Add(i);
                    }
            }
            if (factors.Count >= 2)
            {
                factors.Sort();
                factors.Reverse();
                return factors[0]+factors[1];
            }

                return 1;  
        }

【问题讨论】:

    标签: c# math primes factorization


    【解决方案1】:

    我错过了阅读答案是数字x的所有质因数的总和

    这里是更新后的代码:(请随意评论代码)

    private static long CalcPassword2(long p)
            {
                p++;
                List<int> factors = new List<int>();
    
                for (int i = 1; i <= p; i++)
                {
                    if (p % i == 0)
                        if (isprime(i))
                        {
                            factors.Add(i);
                        }
                }
                int answer = 0;
                foreach (int prime in factors)
                {
                    answer = answer + prime;
                }
                return answer;
            }
    

    【讨论】: