数的进制转换与回文判断
int is_value(int x, int base)
{
int k = x;
int num = 0;
/*if(x == 0)
return 0;*/
while(x)
{
num = num * base + x % base;
x /= base;
}
if(k == num)
return 1;
else
return 0;
}
辗转相除法
int gcd(int a, int b)
{
if(b == 0)
return a;
return (b, a % b);
}
素数筛与线性筛
素数筛:
#include<stdio.h>
#include<math.h>
int main()
{
int maxn = 200000;
long long p[maxn] = {0};
for(long long i = 2; i <= maxn; i++)
{
if(!p[i])
{
p[++ p[0]] = i;
for(long long j = i * i; j <= maxn; j += i)
{
if(!p[j])
{
p[j] = i;
}
// p[j] = i;
}
}}
long long n;
while(scanf("%lld", &n) != EOF)
{
printf("%lld\n", p[n]);
}
}
线性筛:
#include<stdio.h>
int main()
{
long long maxn = 150000;
long long p[maxn + 5] = {0};
for(long long i = 2; i <= maxn; i++)
{
if(!p[i])
{
p[++ p[0] ] = i;
}
for(long long j = 1; j <= p[0]; j++)
{
if(i * p[j] > maxn)
break;
p[i * p[j]] = 1;
if(i % p[j] == 0)
break;
}
}
long long n;
while(~scanf("%lld", &n))
{
printf("%lld\n", p[n]);
}
}
第二天的学习就结束了