Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 素数之和,难题_C#_Primes - Fatal编程技术网

C# 素数之和,难题

C# 素数之和,难题,c#,primes,C#,Primes,因此,在拔出头发30分钟后,我决定到So寻求有关此问题的帮助: 低于10的素数之和为2+3+5+7=17 求200万以下所有素数之和 现在,我不想知道如何解决这个问题——这很容易——特别是不想知道答案。我想知道为什么我的代码在运行时没有给出正确的答案(C#): 使用系统; 使用System.Collections.Generic; 公共类Euler010{ 公共静态bool iPrime(Int64 n){ 如果(nint64f=5; 而(fint64f=5; 虽然(f你没有在循环中使用变量r,

因此,在拔出头发30分钟后,我决定到So寻求有关此问题的帮助:

低于10的素数之和为2+3+5+7=17

求200万以下所有素数之和

现在,我不想知道如何解决这个问题——这很容易——特别是不想知道答案。我想知道为什么我的代码在运行时没有给出正确的答案(C#):

使用系统;
使用System.Collections.Generic;
公共类Euler010{
公共静态bool iPrime(Int64 n){
如果(n
int64f=5;
而(f
int64f=5;

虽然(f你没有在循环中使用变量r,我假设你可能想循环,而f你没有在循环中使用变量r,我假设你可能想循环,而f不是你想要的,但你可能应该使用类似的东西来生成素数。

不是你想要的,但你可能应该使用我们例如生成素数。

加上现有的测试捕获20以下的所有非素数(可被2、3等整除)。

加上现有的测试捕获20以下的所有非素数(可被2、3等整除)。

你真的是说“Int64 f=5;而(fFYI,在测试素数的数字时有很多简洁的快捷方式。我喜欢的一个是——在2和3之后,你只需要检查形式为:(6n-1)和(6n+1)的数字,从n=1开始。为什么不直接计算呢?让我们看看,所有整数的和是n*(n+1)/2…减去两个的复合倍数…n(n+1)/(2p)-p、 这是一个有趣的解决方案。非常不同,我使用了作为寻找所有素数的基础。你真的是指“Int64 f=5;而(fFYI,在测试素数的数字时有很多简洁的快捷方式。我喜欢的一个是——在2和3之后,你只需要检查形式为:(6n-1)和(6n+1)的数字,从n=1开始。为什么不直接计算呢?让我们看看,所有整数的和是n*(n+1)/2…减去两个的复合倍数…n(n+1)/(2p)-p、 这是一个有趣的解决方案。非常不同的是,我把它作为寻找所有素数的基础。
using System;
using System.Collections.Generic;

public class Euler010 {
    public static bool isPrime(Int64 n) {
        if (n <= 1)
            return false;
        if (n < 4)
            return true;
        if (n % 2 == 0)
            return false;
        if (n < 9)
            return true;
        if (n % 3 == 0)
            return false;

        Int64 r = (Int64)Math.Floor(Math.Sqrt((double)n));
        Int64 f = 5;
        while (f <= 4) {
            if (n % f == 0)
                return false;
            if (n % (f + 2) == 0)
                return false;
            f += 6;
        }
        return true;
    }


    public static void Main() {
        Int64 sum = 2;
        for (Int64 n = 3; n <= 2000000; n+=2) {
            if (isPrime(n)) {
                sum += n;
            }
        }

        Console.WriteLine(sum);
        Console.ReadLine();
    }
}
        Int64 f = 5;
        while (f <= 4) {