Я работаю над небольшой программой о простых числах.
Например, у меня есть массивы простых чисел:
array[15]={0,0,0,13,0,17,0,31,7,3,0,0,0,37,0};
Мне нужно извлечь нули из массива, затем мне нужно сохранить оставшиеся числа в другой массив (для этого случая tmp).
Я сгенерировал следующую функцию для этой операции.
Для следующего кода:
counter - количество простых чисел в массиве (для этого случая 6).
дБ - размер массива (для этого случая 15).
void function2(int array[],int counter){
int tmp[counter];
//takes arrayB with zeros in it, extract zeros prints new array.
for(int a=0;a<counter;a++){
for(int i=0;i<dB;i++){
if(array[i]!=0 ){
tmp[a]=array[i];
break;
}
}
}
cout<<"Prime numbers array extracted from above:\n";
for(int b=0;b<counter;b++){
cout<<tmp[b]<<" ";
}
}
Когда я выполняю этот код, он просто печатает первое простое число массива (13) для счетчиков, умноженных на (6).
13,13,13,13,13,13
Однако мне нужен следующий вывод.
13,17,31,7,3,27
Я думаю, что мой алгоритм неверен. Как я могу это исправить?
Спасибо!
Когда я изменяю оператор if следующим образом:
if(array[i]!=0 && array[a-1]!=array[i])
Я получаю следующий вывод
13,17,13,17,13,17
Нужно ли делать изменения для всех 6 элементов?