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

Помогите решить проблемку - C++

Восстановить пароль Регистрация
 
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 04:46     Помогите решить проблемку #1
Дано натуральное число. Определить оно простое. Число называется простым, если оно не имеет других делителей, кроме 1 и самого себя.

Как написать кодик:
или писать через for то как помогите плиз!

C++
1
2
3
int y;
    cout<<"Vedit` proste chislo: "; cin>>y;
if (y < 0 || y/1 == y && y/y == 1 )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 04:46     Помогите решить проблемку
Посмотрите здесь:

C++ помогите решить
помогите решить... C++
Помогите решить C++
Помогите решить... C++
Помогите решить в С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
15.11.2011, 08:12     Помогите решить проблемку #2
Самый простой способ: перебрать все делители от 2 до корня от числа, высчитывая остаток от деления.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool IsSimple(int N)
{
 int To = (int)sqrt(N);
 for (int i=2; i<=To; i++)
 {
  if (!(N%i))
  {
   return false;
  }
 }
 return true;
}
 
int main(int argc, char* argv[])
{
 cout << "Enter N: ";
 int N; cin >> N;
 if (IsSimple(N)) cout << "Simple" << endl;
 else cout << "NOT simple" << endl;
 system("pause");
 return 0;
}
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 15:24  [ТС]     Помогите решить проблемку #3
может есть какой то простой способ?
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:35     Помогите решить проблемку #4
Вот самый простой способ))) зацени!
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main(void)
{
cout << "\nProstie 4isla 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53\n";
system("pause");
}
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 17:40  [ТС]     Помогите решить проблемку #5
ахаха смешно то как))
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:42     Помогите решить проблемку #6
Можное еще сделать чтобы они по очереди на экране всплывали))
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 17:53     Помогите решить проблемку #7
Цитата Сообщение от vpnwz151 Посмотреть сообщение
Число называется простым, если оно не имеет других делителей, кроме 1 и самого себя.
Поправлю немного. Под ваше определение 1 тоже попадает, а это не простое число.

Цитата Сообщение от vpnwz151 Посмотреть сообщение
может есть какой то простой способ?
Это и есть самый простой способ, дающий точный ответ -"ДА" или "НЕТ". Алгоритм можно, конечно модернизировать, проверять только нечетные числа (предварительно проверив двойку), но от этого он проще не станет. Есть вероятностные алгоритмы, но они требуют знание азов теории чисел. Так что проще алгоритма нет, некуда проще.
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 18:03  [ТС]     Помогите решить проблемку #8
надо прорисовать с клавиатуры число или что-то я не доганяю эту задачю
какой из этих правильный?

Добавлено через 3 минуты
Числа 2 3 5 7 11 13 17 19 23 29 31 37 41 43
как тогда должен выглядит код?
если вводом с клавиатуры
и с проверкой я так понимаю должен быть цыкл for или я ошибаюсь?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
15.11.2011, 18:03     Помогите решить проблемку #9
Цитата Сообщение от vpnwz151 Посмотреть сообщение
надо прорисовать с клавиатуры число или что-то я не доганяю эту задачю
какой из этих правильный?
простые числа вам поставленая задача определить является ли число (введенное с клавиатуры) простым или нет. Так вот на сегодняший день единственный точный алгоритм это перебор. все остальные имеют вероятность дать ложный результат.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:07     Помогите решить проблемку #10
vpnwz151, вы что, алгоритм от сарказма (в #4) отличить не можете? пользуйтесь программой из поста 2 и радуйтесь жизни.
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 18:12  [ТС]     Помогите решить проблемку #11
Точней проверять каждое число? через if ?
Или я ошибаюсь?

Добавлено через 4 минуты
Цитата Сообщение от Thinker Посмотреть сообщение
vpnwz151, вы что, алгоритм от сарказма (в #4) отличить не можете? пользуйтесь программой из поста 2 и радуйтесь жизни.
Где ошибка при сложение такого кода?

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
#include <iostream>
using namespace std;
void main()
 
{
 
    bool IsSimple(int N)
{
 int To = (int)sqrt(N);
 for (int i=2; i<=To; i++)
 {
  if (!(N%i))
  {
   return false;
  }
 }
 return true;
}
 
int main(int argc, char* argv[])
{
 cout << "Enter N: ";
 int N; cin >> N;
 if (IsSimple(N)) cout << "Simple" << endl;
 else cout << "NOT simple" << endl;
 system("pause");
 return 0;
}
 
 
 
 
 
 
 
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:13     Помогите решить проблемку #12
Цитата Сообщение от vpnwz151 Посмотреть сообщение
Где ошибка при сложение такого кода?
там нет ошибок.
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 18:18  [ТС]     Помогите решить проблемку #13
но все же при компиляция выкидывает 6 ошибок!
visual studio 2010
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:25     Помогите решить проблемку #14
попробуйте так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdio.h>
#include<math.h>
#include<conio.h>
 
int Prime(long a)
{
   long i = 2;
   a = labs(a);
   if (a == 0 || a == 1)
      return 0;
   while (i*i <= a && a%i)
      i++;
   return i*i >= a;
}
 
int main()
{
   long a;
   scanf("%ld", &a);
   printf("%s\n", Prime(a) ? "prime" : "not prime");
   getch();
   return 0;
}
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 18:52  [ТС]     Помогите решить проблемку #15
а если така поступить?

C++
1
2
3
4
5
6
7
8
        int a;
        cout<<"namber chislo: "; cin>>a;
        if (a!=0 && a != 1)
 
            cout<<"proste"<<endl;
 
        else 
            cout<<"ne proste"<<endl;
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:58     Помогите решить проблемку #16
У вас так все числа, кроме 0 и 1, простыми будут.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.11.2011, 19:59     Помогите решить проблемку #17
Цитата Сообщение от vpnwz151 Посмотреть сообщение
ахаха смешно то как))
Кстати ничего смешного. Так можно значительно быстрее определить, простое число, или нет. Вот пример для чисел < 1000
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
#include <stdio.h>
#include <stdlib.h>
 
int cmp(const void * a, const void * b){
    return *(int*)a - *(int*)b;
}
 
int is_prime(const int n){
    static const int PRIMES[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79,
        83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193,
        197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313,
        317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443,
        449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587,
        593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719,
        727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859,
        863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
    };
 
    return bsearch(&n, PRIMES, sizeof(PRIMES)/sizeof(PRIMES[0]), sizeof(PRIMES[0]), cmp);
}
 
int main(void){
    int n;
    
    while ( printf("N = ") > 0 && scanf("%d", &n) == 1 )
        printf("Is %sprime\n", ( is_prime(n) ) ? "" : "not ");
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 20:51     Помогите решить проблемку
Еще ссылки по теме:

C++ помогите решить
Помогите решить . C++
C++ Системы классов. Помогите разрешить небольшую проблемку.

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

Или воспользуйтесь поиском по форуму:
vpnwz151
 Аватар для vpnwz151
10 / 11 / 1
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 20:51  [ТС]     Помогите решить проблемку #18
Есть возможность сделать это с помощью if, for
не использовать printf и другие значения, не учили такое просто еще!
Yandex
Объявления
15.11.2011, 20:51     Помогите решить проблемку
Ответ Создать тему
Опции темы

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