Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vpnwz151
10 / 11 / 3
Регистрация: 03.11.2011
Сообщений: 129
#1

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

15.11.2011, 04:46. Просмотров 664. Ответов 17
Метки нет (Все метки)

Дано натуральное число. Определить оно простое. Число называется простым, если оно не имеет других делителей, кроме 1 и самого себя.

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

C++
1
2
3
int y;
    cout<<"Vedit` proste chislo: "; cin>>y;
if (y < 0 || y/1 == y && y/y == 1 )

http://www.cyberforum.ru/cpp-beginners/thread396206.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 04:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Помогите решить проблемку (C++):

помогите решить
Написать и протестировать программу STREND (str 1,str 2) которая возвращает...

Помогите решить в С++
Array18. Дан целочисленный массив размера N. Определить максимальное количество...

Помогите решить
ЭТО ЗАДАНИЕ Position of &quot;-1&quot;. In the given NxM matrix find the LAST...

помогите решить))
привет всем! помогите решить (x mod3)-1; я новичек и еще много не доганяю...

помогите решить
1- составить прогу для решения уравнения см фото. примерное решение ,но тут...

17
mimicria
return (true);
1960 / 1097 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
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;
}
1
vpnwz151
10 / 11 / 3
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 15:24  [ТС] #3
может есть какой то простой способ?
0
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
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");
}
0
vpnwz151
10 / 11 / 3
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 17:40  [ТС] #5
ахаха смешно то как))
0
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
15.11.2011, 17:42 #6
Можное еще сделать чтобы они по очереди на экране всплывали))
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 17:53 #7
Цитата Сообщение от vpnwz151 Посмотреть сообщение
Число называется простым, если оно не имеет других делителей, кроме 1 и самого себя.
Поправлю немного. Под ваше определение 1 тоже попадает, а это не простое число.

Цитата Сообщение от vpnwz151 Посмотреть сообщение
может есть какой то простой способ?
Это и есть самый простой способ, дающий точный ответ -"ДА" или "НЕТ". Алгоритм можно, конечно модернизировать, проверять только нечетные числа (предварительно проверив двойку), но от этого он проще не станет. Есть вероятностные алгоритмы, но они требуют знание азов теории чисел. Так что проще алгоритма нет, некуда проще.
0
vpnwz151
10 / 11 / 3
Регистрация: 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 или я ошибаюсь?
0
alkagolik
Заблокирован
15.11.2011, 18:03 #9
Цитата Сообщение от vpnwz151 Посмотреть сообщение
надо прорисовать с клавиатуры число или что-то я не доганяю эту задачю
какой из этих правильный?
простые числа вам поставленая задача определить является ли число (введенное с клавиатуры) простым или нет. Так вот на сегодняший день единственный точный алгоритм это перебор. все остальные имеют вероятность дать ложный результат.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:07 #10
vpnwz151, вы что, алгоритм от сарказма (в #4) отличить не можете? пользуйтесь программой из поста 2 и радуйтесь жизни.
0
vpnwz151
10 / 11 / 3
Регистрация: 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;
}
 
 
 
 
 
 
 
}
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:13 #12
Цитата Сообщение от vpnwz151 Посмотреть сообщение
Где ошибка при сложение такого кода?
там нет ошибок.
0
vpnwz151
10 / 11 / 3
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 18:18  [ТС] #13
но все же при компиляция выкидывает 6 ошибок!
visual studio 2010
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 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;
}
1
vpnwz151
10 / 11 / 3
Регистрация: 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;
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.11.2011, 18:58 #16
У вас так все числа, кроме 0 и 1, простыми будут.
1
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
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;
}
1
vpnwz151
10 / 11 / 3
Регистрация: 03.11.2011
Сообщений: 129
15.11.2011, 20:51  [ТС] #18
Есть возможность сделать это с помощью if, for
не использовать printf и другие значения, не учили такое просто еще!
0
15.11.2011, 20:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 20:51
Привет! Вот еще темы с решениями:

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

Помогите решить...
Некий чиновник купил лошадей и быков на 1770 талеров. За каждую лошадь он...

Помогите решить ...
Помогите решить 2-е задачи ... или дайте алгоритм решения ... 1)Составьте...

Помогите решить .
C++ Вести три действительных числа от -10 до 10. Возвести в квадрат те из...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru