一只小蒟蒻备考蓝桥杯的日志
bool is_prime[MAXSIZE];
int prime[MAXSIZE];
void Euler(int MAXSIZE) {
memset(is_prime, true, sizeof(is_prime));
is_prime[0] = false;
is_prime[1] = false;
int cnt = 0;
for(int i = 2; i <= MAXSIZE; i++) {
if(is_prime[i]) {
prime[cnt++] = i;
}
for(int j = 0; j < cnt && i * prime[j] <= MAXSIZE; j++) {
is_prime[i * prime[j]] = false;
if(i % prime[j] == 0) break;
}
}
}
void E(int MAXSIZE) {
memset(is_prime, true, sizeof(is_prime));
int cnt = 0;
for(int i = 2; i <= MAXSIZE; i++) {
if(is_prime[i]) {
prime[cnt++] = i;
for(int j = i * i; j <= MAXSIZE; j += i) {
is_prime[j] = false;
}
}
}
}
bool Sqrt_isPrime(int x) {
if (x % 2 == 0) return false;
for(int i = 3; i * i <= x; i += 2) {
if(x % i == 0) return false;
}
return true;
}
前两者适合有很多很多数要筛,打表的时候
后者适合单个数(或少量数据)判断
参考 C++ sort()排序详解
#include
sort(begin, end, cmp);
//sort(arr, arr + t, cmp)
//cmp for example:
greater<int>() // 从大到小
less<int>() // 从小大到
bool cmp(int a, int b) {
return a > b;
}
要么一堆for组合,代码长,但是直接从小到大排好
要么下附的,嵌入式找回文数,但要sort排一下
哎哟喂我个鬼精灵的
void Find_Palindromes(int b1, int &t) {
P[t++] = 11; //偶数位回文质数只有11
for (int i = 1; i <= 9; i+= 2) {
P[t++] = i;
for (int j = 0; j <= 9 && b1 >= 3; j++) {
P[t++] = i * 100 + j * 10 + i;
for (int k = 0; k <= 9 && b1 >= 5; k++) {
P[t++] = i * 10000 + j * 1000 + k * 100 + j * 10 + i;
for (int p = 0; p <= 9 && b1 >= 7; p++) {
P[t++] = i * 1000000 + j * 100000 + k * 10000 + p *1000 + k * 100 + j * 10 + i;
}
}
}
}
sort(P, P + t, less<int>());
}
参考 C语言之三维数组
char W[10][5][3]=//W[i][j][k]表示第i个数字的第j行的第k列,(手打累死了)
{
{//0
'X','X','X',
'X','.','X',
'X','.','X',
'X','.','X',
'X','X','X',
},
{//1
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
'.','.','X',
}, ...
//使用时
W[1][1][i] 搭配for循环一个个输出
摸鱼两天…发奋图强的一天呢这真是,加油!
题型还是比较简单的那类
一点点开始变难和扣细节
加油! ! !