49,434
社区成员




学会了一种新的素数筛法,六素数
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if(num == 2 || num == 3) return true;
if(num % 6 != 1 && num % 6 != 5) return false;
for(int i = 5; i <= sqrt(num); i += 6) {
if(num % i == 0 || num % (i+2) == 0)
return false;
}
return true;
}
int main() {
int i = 2, cnt = 0;
while(true) {
if(isPrime(i)) cnt++;
if(cnt == 100002) {
cout << i << endl;
break;
}
i++;
}
return 0;
}
全排列+判断函数
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e8+10;
int num[10]={1,2,3,4,5,6,7,8,9,10};
bool check(int num[10]){
for(int i=1;i<10;i++){
if(abs(num[i]-num[i-1])==1) return false;
}
return true;
}
int main()
{
int ans=0;
do{
if(check(num)) ans++;
}while(next_permutation(num,num+10));
cout<<ans;
return 0;
}
用结构体数组保存数据,排序后判断
用一个数组保存当前层的数,然后逆序计算下一层不影响下一个数的计算,所有的数按顺序存入数组输出