Другие языки программирования и технологии

Найти все такие простые числа, не превосходящие заданного N, двоичная запись которых представляет собой симметричную

Что делаю не так? Помогите пожалуйста сделать эту программу, никак

#include
#include
#include
using namespace std;
int main()
{
char string[25];
char temp,coc;
int v,reverse=0,n,i,j,c,b;
int sum;
scanf("%d", &n);
for (i=2; i<n; i++)
{
for(sum=0,j=2; j<101; j++) if (i%j==0) sum++;
if(sum==1) {
v++;
itoa(i,string,2);
int stringg = atoi(string);
printf("%d %d\n", i,stringg);
while(temp!=0
)
temp=stringg;
reverse=reverse*10;
reverse=reverse+temp%10;
temp=temp/10;
if (stringg=reverse)
{
printf("%d xxxxx\n", stringg);}
} }
system ("pause");
return 0;
}
#include <iostream>
#include <bitset>
#include <vector>
using namespace std;
template<typename Type>
bool is_prime(Type num) {
bool prime;
if (num < 6 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
Type n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num;
}
return prime;
}
size_t input(const char* msg) {
cout << "n >>> ";
size_t num;
cin >> num;
return num;
}
vector<size_t> load(const size_t n) {
vector<size_t> box;
for (size_t i = 2; i < n; ++i) if (is_prime(i)) box.push_back(i);
return box;
}
bool palindrome(const string& str) {
size_t beg = 0;
auto end = str.length() - 1;
while (str[beg] != '1') ++beg;
while (beg < end) {
if (str[beg] != str[end]) return false;
++beg;
--end;
}
return true;
}
vector<size_t> symmetric(const vector<size_t>& primes) {
vector<size_t> box;
for (const auto &dec : primes) {
bitset<32> bin = dec;
if (palindrome(bin.to_string())) box.push_back(dec);
}
return box;
}
void print(const vector<size_t>& res) {
for (const auto num : res) cout << ' ' << num;
cout.put('\n');
}
int main() {
const auto number = input("n >>> ");
const auto primes = load(number);
const auto result = symmetric(primes);
print(result);
system("pause");
}
Азазель (Хозин Дмитрий)
Азазель (Хозин Дмитрий)
59 529
Лучший ответ
Андрей Фоминых ух... а можно попроще код? А то этот даже компилятор не компилит
Вот у меня есть функция для двоичной симметрии, как создать функцию для вычисления простых цифр и сделать её взаимодействие с данной функцией?
int Simmetr(int n)
{ int k =0;
while(n) {
k = 2*k + n%2;
n /= 2;
}
if (k==n) return 1;
else return 0;
}

Похожие вопросы