Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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++新手,想让这段代码正常工作。这是一个基本的算法 素数。我创建了一个数组,其大小由用户输入定义。然后我需要打印 仅此数组中的最大素数。我在这里怎么做 unsigned long long nPrime(unsigned n) { long long *a = new long long[n + 1]; long long maxNum = a[n]; for (int i = 0; i < n + 1; i++) { a[i] = i; } for (int j = 2; j < n + 1; j++) { if (a[j] != 0) { for (int k = j * j; k < n + 1; k += j) { a[k] = 0; } cout << a[j] << endl; } } return 0; } 无符号长n时间(无符号n){ long-long*a=新的long-long[n+1]; long-long-maxNum=a[n]; 对于(int i=0;i>userInput;”然后是“nprome(userInput);”但它并没有真正输出最大素数……它只是在我输入“userInput”后停止,我甚至可以先将所有值设置为true,然后反转其含义:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您之前的建议,在“main.cpp”中做了一些小调整“这是可行的。我甚至不想一开始就把所有的值都设为true,然后把它的意思颠倒过来:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您以前的建议,在“main.cpp”中做了一些小的调整,并且成功了。_C++_Arrays_Data Structures_Max_Primes - Fatal编程技术网

如何使此函数输出最大数组值? 我是C++新手,想让这段代码正常工作。这是一个基本的算法 素数。我创建了一个数组,其大小由用户输入定义。然后我需要打印 仅此数组中的最大素数。我在这里怎么做 unsigned long long nPrime(unsigned n) { long long *a = new long long[n + 1]; long long maxNum = a[n]; for (int i = 0; i < n + 1; i++) { a[i] = i; } for (int j = 2; j < n + 1; j++) { if (a[j] != 0) { for (int k = j * j; k < n + 1; k += j) { a[k] = 0; } cout << a[j] << endl; } } return 0; } 无符号长n时间(无符号n){ long-long*a=新的long-long[n+1]; long-long-maxNum=a[n]; 对于(int i=0;i>userInput;”然后是“nprome(userInput);”但它并没有真正输出最大素数……它只是在我输入“userInput”后停止,我甚至可以先将所有值设置为true,然后反转其含义:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您之前的建议,在“main.cpp”中做了一些小调整“这是可行的。我甚至不想一开始就把所有的值都设为true,然后把它的意思颠倒过来:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您以前的建议,在“main.cpp”中做了一些小的调整,并且成功了。

如何使此函数输出最大数组值? 我是C++新手,想让这段代码正常工作。这是一个基本的算法 素数。我创建了一个数组,其大小由用户输入定义。然后我需要打印 仅此数组中的最大素数。我在这里怎么做 unsigned long long nPrime(unsigned n) { long long *a = new long long[n + 1]; long long maxNum = a[n]; for (int i = 0; i < n + 1; i++) { a[i] = i; } for (int j = 2; j < n + 1; j++) { if (a[j] != 0) { for (int k = j * j; k < n + 1; k += j) { a[k] = 0; } cout << a[j] << endl; } } return 0; } 无符号长n时间(无符号n){ long-long*a=新的long-long[n+1]; long-long-maxNum=a[n]; 对于(int i=0;i>userInput;”然后是“nprome(userInput);”但它并没有真正输出最大素数……它只是在我输入“userInput”后停止,我甚至可以先将所有值设置为true,然后反转其含义:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您之前的建议,在“main.cpp”中做了一些小调整“这是可行的。我甚至不想一开始就把所有的值都设为true,然后把它的意思颠倒过来:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您以前的建议,在“main.cpp”中做了一些小的调整,并且成功了。,c++,arrays,data-structures,max,primes,C++,Arrays,Data Structures,Max,Primes,似乎在数组中用值0标记非素数。我们知道素数是正数,为了简化,让maxNum为-1。然后我在函数的和处添加了一个,它将计算数组中的最大素数。这是一种方法: unsigned long long nPrime(unsigned n) { long long *a = new long long[n + 1]; long long maxNum = -1; for (long long i = 0; i < n + 1; i++) { a[i] = i;

似乎在数组中用值0标记非素数。我们知道素数是正数,为了简化,让maxNum为-1。然后我在函数的和处添加了一个,它将计算数组中的最大素数。这是一种方法:

unsigned long long nPrime(unsigned n) {
    long long *a = new long long[n + 1];
    long long maxNum = -1;

    for (long long i = 0; i < n + 1; i++) {
        a[i] = i;
    }

    for (long long i = 2; i < n + 1; i++) {
        for (long long k = i * i; k < n + 1; k += i) {
            a[k] = 0;
        }
    }

    for (long long i = 1; i < n; i++) {
        if (a[i] != 0 && maxNum < a[i]) maxNum = a[i];
    }

    return maxNum;
}

看起来你在数组中用值0标记非素数。我们知道素数是正数,为了简化,让maxNum为-1。然后我在函数的和处添加了一个,它将计算数组中的最大素数。这是一种方法:

unsigned long long nPrime(unsigned n) {
    long long *a = new long long[n + 1];
    long long maxNum = -1;

    for (long long i = 0; i < n + 1; i++) {
        a[i] = i;
    }

    for (long long i = 2; i < n + 1; i++) {
        for (long long k = i * i; k < n + 1; k += i) {
            a[k] = 0;
        }
    }

    for (long long i = 1; i < n; i++) {
        if (a[i] != 0 && maxNum < a[i]) maxNum = a[i];
    }

    return maxNum;
}

您可以使用
中的
std::max\u元素查找数组中的最大数字:

但这甚至不是必需的。因为最大素数将是您找到的最后一个素数,所以请记住:

int biggestPrime = 2;
然后,当你找到素数时:

biggestPrime = j;
您还可以将
long
数组替换为
bool
数组,因为索引已跟踪数字:

unsigned long long nPrime(unsigned n) {
    bool *a = new bool[n + 1]();
    long long maxNum = a[n];
    int biggestPrime = 2;

    for (int j = 2; j < n + 1; j++) {
        if (!a[j]) {
            for (int k = j * j; k < n + 1; k += j) {
                a[k] = true;
            }
            biggestPrime = j;
        }
    }
    delete[] a;
    return biggestPrime;
}

您可以使用
中的
std::max\u元素查找数组中的最大数字:

但这甚至不是必需的。因为最大素数将是您找到的最后一个素数,所以请记住:

int biggestPrime = 2;
然后,当你找到素数时:

biggestPrime = j;
您还可以将
long
数组替换为
bool
数组,因为索引已跟踪数字:

unsigned long long nPrime(unsigned n) {
    bool *a = new bool[n + 1]();
    long long maxNum = a[n];
    int biggestPrime = 2;

    for (int j = 2; j < n + 1; j++) {
        if (!a[j]) {
            for (int k = j * j; k < n + 1; k += j) {
                a[k] = true;
            }
            biggestPrime = j;
        }
    }
    delete[] a;
    return biggestPrime;
}

它被称为“埃拉托斯提尼筛”……目前,你将输出任何素数。如果你存储
a[j]
相反,在一个单独的变量中,您会发现循环后有最新的写入值,这将是您所追求的最大值。它被称为“Eratosthenes的筛选”…当前,您将输出任何素数。如果您存储
a[j]
相反,在一个单独的变量中,您会发现循环后有最新的写入值,这将是您所追求的最大值。是的,我尝试了类似的方法,但问题是,在main.cpp中,我有“cin>>userInput;”,然后是“nprome(userInput);”,但它并没有真正输出最大素数……它只是在我输入参数后停止“userInput”是的,我尝试过类似的方法,但事实是,在main.cpp中,我有“cin>>userInput;”然后是“nprome(userInput);”但它并没有真正输出最大素数……它只是在我输入“userInput”后停止,我甚至可以先将所有值设置为true,然后反转其含义:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您之前的建议,在“main.cpp”中做了一些小调整“这是可行的。我甚至不想一开始就把所有的值都设为true,然后把它的意思颠倒过来:a[x]如果它是非素数,则为真…不幸的是,我不能在这里使用bool,这是任务条件所不允许的。但感谢您向我解释这种方式,我肯定会这样做,我认为这更符合逻辑。谢谢!我遵循了您以前的建议,在“main.cpp”中做了一些小的调整,并且成功了。