Member 12779695 Ответов: 1

Число различных простых чисел данного числа


Я хочу найти число различных простых чисел данного числа, я передаю массив в функцию, а затем умножаю все элементы массива, чтобы сгенерировать число, я получаю ошибку шины для некоторых тестовых случаев

Что я уже пробовал:

int Solution::solve(vector<int> &A) {
    long long int mul = 1;
     for(int i=0;(i<A.size()-1);i++)
     {
         mul = mul*A[i];
     }
    int new1 = mul;
    int arr[new1 + 1];
    memset(arr, 0, sizeof(arr));
    for (int i = 2; i * i <= new1; i++) 
    {
        if (!arr[i])
            {
                for (int j = 2 * i; j <= new1; j += i)
                {
                    arr[j]++;
                }
            }
 
        arr[i] = 1; 
    }
    return *max_element(arr, arr+new1);
}

Eric Lynch

Я бы добавил некоторую обработку исключений, чтобы выяснить, какие случаи вызывают ошибку, а затем прошел бы через отладчик для одного из этих случаев, чтобы выяснить, какая строка вызывает ошибку.

Richard MacCutchan

"Я получаю ошибку шины для некоторых тестовых случаев"
Какие тестовые случаи и где вы получаете ошибку?

CPallini

1. Я хочу найти число различных простых чисел данного числа,
2. Я передаю массив в функцию, а затем умножаю все элементы массива, чтобы сгенерировать число,
Как связаны между собой предложения (1) и (2)?

KarstenK

Действительно странный код, не работает для простого числа.
Запишите некоторые тестовые данные, включите больше выходных данных и используйте отладчик.

1 Ответов

Рейтинг:
1

Patrice T

Этот код очень странный:

for(int i=0;(i<A.size()-1);i++)
{
    mul = mul*A[i];
}

потому что он умножает все числа вектора, кроме последнего.
Цитата:
Я хочу найти число различных простых чисел данного числа

Вы можете это определить ?
Потому что, как я понимаю, это не то, что делает ваш код, это - даже не близко.
Насколько я понимаю, ваш код возвращает список всех простых чисел ниже mul.

Завершите свой код, чтобы его можно было запустить.
Покажите пример ввода, который выдаст вам сообщение об ошибке.