Форум программистов, компьютерный форум CyberForum.ru

Функция для простого числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.93
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
07.11.2010, 16:09     Функция для простого числа #1
В головной функции ввести массив чисел.И вывести количество простых чисел.Вот программа.Только почему-то, если она натыкается на составное число, а за ним есть еще простые, то те простые он не счиатет.никак не могу понять почему.вроде все верно.помогите разобраться. пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
int FunProstoe(int x )
 {int i , k , n ;
  if (x==1)  k=0 ;
  else
 {
 for(i=2; i<=sqrt(x) && n ;i++ )
 { n=x%i ; }
     if  (n==0)
        k=0;
     else
      k=1  ;
 }
 return k;
}
 
 
int main()
 
{  const n=5;
   unsigned A[n],k1=0 , s;
 
 for(int i=0 ; i<n ; i++ )
 {cout<<"A["<<i<<"]=  " ;
  cin>>A[i];
  }
 
   for(int i=0 ; i<n ; i++ )
   { s=FunProstoe(A[i]);
     k1=k1+s ;
      }
  cout<<endl<<k1<<" - kol-vo prostyx chisel";
  getch();
  return 0 ;
  }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
07.11.2010, 16:30     Функция для простого числа #2
Я бы ф-цию малость по другому сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
int simple(int n)
{
    if(n<=1)
        return 0;
 
     for (int i = 2; i<=sqrt(n); i++)
          if (n % i == 0)
            return 0;
 
     return 1;
}
И подсчитывал бы так:
C++
1
2
3
4
for(int i=0 ; i<n ; i++ )
{
    k+=simple(A[i]);
}
А у вас косяк, видимо, потому, что переменная n в ф-ции не инициализирована. Сделайте: int n=1.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.11.2010, 16:34     Функция для простого числа #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
bool isPrime(int n)
{
    for (int i = 2; i * i <= n; i++)
        if (n % i == 0)
            return false;
 
    return true;
}
 
int main()
{
    const int r = 10;
    int mas[r];
    int count = 0;
 
    for (int i = 0; i < r; i++)
    {
        std::cout << "mas[" << i << "] = ";
        std::cin >> mas[i];
    }
 
    for (int i = 0; i < r; i++)
        if (isPrime(mas[i]))
            count++;
 
    std::cout << "Num of prime: " << count;
 
    std::cin.get();
    return 0;
}
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
07.11.2010, 16:58  [ТС]     Функция для простого числа #4
dihlofos, а вы проверяли свое?просто и в вашем случае как и у меня как только он натыкается на составное то после него простые уже не считает(((
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
07.11.2010, 17:05     Функция для простого числа #5
barlog, проверял, и ничего такого не обнаружил.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <math.h>
using namespace std;
 
int simple(int n)
{
    if(n<=1)
        return 0;
 
     for (int i = 2; i<=sqrt(n); i++)
          if (n % i == 0)
                return 0;
 
     return 1;
}
 
 
int main()
 
{
    const int n=5;
    int A[n],k=0 , s;
 
    for(int i=0 ; i<n ; i++ )
    {
        cout<<"A["<<i<<"]=  " ;
        cin>>A[i];
    }
 
    for(int i=0 ; i<n ; i++ )
    {
            k+=simple(A[i]);
    }
 
 
  cout<<k<<" - kol-vo prostyx chisel\n";
 
  system("pause");
  return 0;
 }
Миниатюры
Функция для простого числа  
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
07.11.2010, 17:09  [ТС]     Функция для простого числа #6
silent_1991, и у вас тоже самое((((оно не работает как только натыкается на сосотавное((

Добавлено через 1 минуту
dihlofos, хмммм...да я вижу....а у меня чего-то нет(((сейчас буду разбираться чего((
Спасибо!

Добавлено через 44 секунды
не знаю...у меня все тоже самое....
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.11.2010, 17:10     Функция для простого числа #7
Точно?

Код
mas[0] = 1
mas[1] = 2
mas[2] = 3
mas[3] = 4
mas[4] = 5
mas[5] = 6
mas[6] = 7
mas[7] = 8
mas[8] = 9
mas[9] = 10
Num of prime: 5
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
07.11.2010, 17:12  [ТС]     Функция для простого числа #8
может это просто мой билдер глючит(((...ладно. всем спасибо !

Добавлено через 51 секунду
странно....хммм((
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.11.2010, 17:13     Функция для простого числа #9
Там просто напросто нечему зависать... Покажите входные данные, которые вы вводите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2010, 17:25     Функция для простого числа
Еще ссылки по теме:

написать программу для прверки простого числа. язык программировние С C++
функции для вычисления среднего значения и определения простого числа C++
Генерация простого числа C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
07.11.2010, 17:25  [ТС]     Функция для простого числа #10
ВСЕ !!!просто там надо было заново файл сохранить, а я каждый раз все в одном и том же делала.в итоге он делал не для того, что надо.Все работает .Спасибо всем!
Yandex
Объявления
07.11.2010, 17:25     Функция для простого числа
Ответ Создать тему
Опции темы

Текущее время: 07:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru