用素数填充数组

时间:2015-12-15 16:19:33

标签: c++ arrays

大家好我的任务是用输入数字N的第一个素数填充数组。数组的大小给出。这是我的解决方案。谢谢你们! 这是输出输入一个数字:77 -858993460 -858993460 2 3 -858993460 5 -858993460 7 -858993460 -858993460 -858993460 11 -858993460 13按任意键继续

    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    bool primenumber(int number) {
        int p = 0;
        for (int i = 1; i <= number; i++) {
            if (number%i == 0) {
                p++;
            }
        }

        if (p == 2) {
            return true;
        }
        else {
            return false;
        }
    }

    void fillArray(int array[], const int N){
        for (int i = 0; i < N; i++){
            if (primenumber(i))
                array[i] = i;
        }
    }
    void printArray(int array[], const int N){
        for (int i = 0; i < N; i++){
            cout << array[i] << " ";
        }
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
        const int N = 14;
        int array[N];
        int number = 0;
        cout << "Enter a number: ";
        cin >> number;
        fillArray(array, number);
        printArray(array, N);
        system("pause");
        return 0;
    }

2 个答案:

答案 0 :(得分:1)

如果array[i]是素数,则将i设置为i。但是,如果array[i]不是素数,则不要将i设置为任何值。您可能只想将素数存储在array中,所以

void fillArray(int array[], const int N){
    for (int i = 2, j = 0; j < N; ++i){
        if (primenumber(i))
            array[j++] = i;
    }
}

答案 1 :(得分:0)

第一件事......你需要初始化阵列 将此用作素数函数

bool primenumber(int number) {
    for(int i(2); i <= sqrt(number); ++i) {
        if(number % i == 0)
            return false;
    }
    return true;
}

其次,因为您已将数组的大小固定为14,所以当您查找大于13的数字时,您的数组将为0 0 2 3 0 5 0 7 0 0 0 11 0 13。我猜这是一个家庭作业问题,您应该考虑使用new动态分配内存来增加数组。不要忘记每个delete [] {/ 1}} {/ 1}}。