powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите найти ошибку.
9 сообщений из 9, страница 1 из 1
помогите найти ошибку.
    #38945502
Фотография ванмомас намбаван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В задаче надо вывести "elementary", если число является степенью двойки, или степенью тройки, или степенью пятерки, или простое, в противном случае вывести "one pipe".

Число в диапазоне от 0 до 2^31-1.


Код: plaintext
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.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
#include <iostream>
#include <stdio.h>

using namespace std;

bool isPrime(long long int n)
{
 if (n==1) return false;
    for (int i = 2; i*i<=n; ++i) {
        if (n%i==0) return false;
   }
  return true;
}

bool isTrojka(long long int m)
{
	
	
	if (m < 3)
	{
		return false;
	}
	while(m != 1)
	{
		if (m % 3 != 0)
		{
	    	return false;
		}
		m = m / 3;
	}
	return true;
}



bool is5(long long int m)
{
	
	
	if (m < 5)
	{
		return false;
	}
	while(m != 1)
	{
		if (m % 5 != 0)
		{
	    	return false;
		}
		m = m / 5;
	}
	return true;
}



long long int isDvojka(long long int x)
{
    return (x <= 0) ? 0 : (x & (x-1)) == 0;    
}



   int main()
   {
	   freopen("input.txt","r",stdin);
	   freopen("output.txt","w",stdout);
	   long long int a;
	   cin>>a;
	  
	  
	   if(isPrime(a)) cout<<"elementary";else
		   if(is5(a)) cout<<"elementary";else
			   if (isDvojka(a)==1) cout<<"elementary";else
				   if(isTrojka(a)) cout<<"elementary";else cout<<"one pipe";


   }
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945509
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванмомас намбаван,

Функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
bool isPrime(long long int n)
{
 if (n==1) return false;
    for (int i = 2; i*i<=n; ++i) {
        if (n%i==0) return false;
   }
  return true;
}



смешно выглядит. Тут ребята топики на 10 страниц на эту тему пишут, а ты...
Ну и если что -- 1 -- простое число. 2, если что -- тоже. Даже 3 -- простое.
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945661
tolyanchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, строго говоря, 1 - не простое (хотя и не составное, конечно:))
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945709
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tolyanchikНу, строго говоря, 1 - не простое (хотя и не составное, конечно:))
Значит ошибок нет
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945778
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ванмомас намбаванЧисло в диапазоне от 0 до 2^31-1.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
bool isPrime(long long int n)
{
 if (n==1) return false;
    for (int i = 2; i*i<=n; ++i) {
        if (n%i==0) return false;
   }
  return true;
}


Тут с типами проблема:
для i недостаточно int , т.к. i*i может оказаться больше разрядности int. Тогда зациклится.
long long int n лишнее, т.к. для 2^31-1 достаточно просто int
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945790
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tolyanchikНу, строго говоря, 1 - не простое (хотя и не составное, конечно:))

Илья опечатался. Не простое, без "строго не строго".
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "one pipe" ? Перевод - безсмысленный.
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945834
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто значит "one pipe" ? Перевод - безсмысленный.
Что значит 2^N "elementary" ты уже понял? :)

Там задачка какая-то, а нам показан только алгоритм ее решения. Так что нет смысла гадать как там изначально вопрос стоял.
...
Рейтинг: 0 / 0
помогите найти ошибку.
    #38945992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да постановка вообще странная. Для степеней двойки, тройки - тривиально а дальше Внезапно(!) проверка
на простоту. И не "elementary" a "composite" надо писать по смыслу.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / помогите найти ошибку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]