1、回文质数判断
#include <iostream>
#include <math.h>
using namespace std;
int huiwen(int n)
{//回文判断
unsigned i=n;
unsigned m=0;
while(i>0)
{// 回文计算
m=m*10+i%10;
i/=10;
}
return (m == n); // 返回真假
}
int sushu(int n)
{//质数判断
int i;
if(n % 2 == 0 && n != 2)
return 0;
for(i = 3; i <= sqrt(n);i += 2) // 不用判断偶数值
if(n % i == 0)
return 0;
return 1;
}
int main()
{
int a,b;
int i,ct = 0;
cin >> a >> b;
if(a > b) return 0;
for(i = a;i <= b;i++)
if(huiwen(i))
if(sushu(i))
ct++;
cout << ct << endl;
}
2、十进制转十六进制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
// 用位运算处理十进制数转十六进制
void OX(int n)
{
char s[8] = { 0 };
int a, i = 0, k;
do
{
a = n & 0x0000000f;//取后四位的二进制位
n >>= 4;//n右移四位
n &= 0xffffffff;
s[i] = (a <= 9) ? a + 48 : a + 87;//48为‘0’,87 是由(97-10)得到 ,97为‘a'
i++;
} while (n);
for (k = i - 1; k >= 0; k--)
printf("%c", s[k]);
printf("\n");
}
void dec_to_hex(int n)
{
int i=0;
const char buf[] = "0123456789abcdef";
char num[]={0};
while(n)
{
num[i] = buf[n%16];
n /= 16;
i++;
}
for(i = i-1;i >= 0;i--)
printf("%c",num[i]);
printf("\n");
}
int main()
{
int n;
scanf("%d", &n);
OX(n);
dec_to_hex(n);
return 0;
}