2015-12-15 2 views
-4

Привет, ребята, моя задача состоит в том, чтобы заполнить массив с помощью первых простых чисел введенного числа 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

Вы не задали вопрос. Есть ли какая-то конкретная ошибка с этим решением? Добавьте сообщения об ошибках компилятора или ожидаемые фактические результаты. – BoBTFish

+1

Что такое _ «простые числа введенного числа N» _? Вы имеете в виду основные факторы 'N'? Или вы имеете в виду первые _N_ простые числа? – CompuChip

+0

нет ошибки при компиляции, но выход isnt right Введите число: 77 -858993460 -858993460 2 3 -858993460 5 -858993460 7 -858993460 -858993460 -858993460 11 -858993460 13 Нажмите любую клавишу, чтобы продолжить – printline

ответ

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; 
    } 
} 
+0

Ребята, ошибка в домашнем задании ... Я должен ввести число, тогда мне нужно сохранить все простые числа в массиве размера 14. – printline

+1

@printline Тогда не пишите это как комментарий к моему ответу, измените свой вопрос на сделайте это более ясным. И BTW; мой ответ устраняет вашу проблему. Вы попробовали? –

0

1-й вещи первой .. . Вам нужно инициализировать свой массив.
Используйте это для простого функции номер

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 [] для каждого new.

Смежные вопросы