基础数论

简单数学:
写在前面:啥也别说了,背代码吧
#include

#define MAX 11111

//计算因(约)数个数
int cont(int x) {
int cont;
for(int i = 1; i * i <= x; i++) {
if(i * i == x) cont += 1;
else if(x % i == 0) cont += 2;
}
return cont;
}
//补:整数唯一分解定理:每个大于1的自然数都可以写成素数的积,
//而且这些素因子按大小排列后,写法仅一种

//分解素因数(找出上面式子中素数的个数)
int count (int x) {
int count = 0;
for(int i = 2; i * i <= x; i++)//1不是素数
{
if(x % i == 0) count += 1;
while(x % i == 0) x /= i;
}
if(x != 1) count += 1;
return count;
}

//线性筛法:每一个合数都会被它的最小素因子筛掉
//之一:埃拉托斯特尼筛法: 每一个素数会删掉它的所有倍数
int v[MAX],p[MAX];
void linear_sieve(int n) {
int tot = 0;
for(int i = 2; i <= n; i++) {
if(!v[i]) p[++tot] = i;
for(int j = 1; i * p[j] <= n; j++) {
v[i * p[j]] = true;
if(i % p[j] == 0) break;
}
}
}

//最大公约数,欧几里得算法
int gcd(int x, int y) {
if(y == 0) return x;
return (y , x % y);
}

int exgcd(int a, int b, int &x, int &y) //ax+by = gcd(a,b) 可求出一组x,y
{//也可以返回最大公约数
if(b == 0) {
x = 1, y = 0;
return a;
}
int d = exgcd(b , a % b, x, y);
int tmp = x;
x = y;
y = tmp - a / b * y;//原x 减去 b分之a乘以y
return d;
}
int main() {
linear_sieve()

}

// #include
#include
#include
using namespace std;
const int max = 3;
queue q;
map<int,int> vis;//用来标记状态(整个图的)
map<int,int> ans;//步数 (整个图的)
int n, g = 123804765,fx,fy,nx,ny;//g为目标状态
int a[4][4];

int main() {
scanf("%d",&n);
if(n == g) {
printf(“0”);
return 0;
}
q.push(n),q.push(g);//使起点,终点状态入队
vis[n] = 1;
vis[g] = 2;
ans[n] = 0;
ans[g] = 1;//???
while(!q.empty() ) {
int now ,bnow = q.front() ;
q.pop() ;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值