C语言--质数算法和最大公约数算法

文章目录

        • 1.在C语言中,判断质数的常见算法有以下几种:
          • 1.1.试除法(暴力算法):
          • 1.2.优化试除法:
          • 1.3.埃拉托色尼筛法:
          • 1.4.米勒-拉宾素性检验:
          • 1.5.线性筛法:
          • 1.6.费马小定理:
          • 1.7.素性检验:
        • 2.在C语言中,求两个数的最大公约数的常见算法有以下几种:
          • 2.1.辗转相减法
          • 2.2.辗转相除法
            • 2.2.1.迭代实现:
            • 2.2.2.递归实现:
          • 2.3. `Stein`算法
          • 2.4.`Lehmer`算法和`Schönhage-Strassen`算法
            • 2.4.1.`Lehmer`算法
            • 2.4.2. `Schönhage-Strassen`算法

1.在C语言中,判断质数的常见算法有以下几种:
  1. 试除法(暴力算法):从2开始依次除以每个小于该数的自然数,如果有余数为0的,则该数不是质数。

  2. 优化试除法:只需要测试小于等于该数平方根的自然数,因为如果大于该数平方根的除数能整除该数,那么小于该数平方根的除数一定也能整除该数。

  3. 埃拉托色尼筛法:从2开始,将数字的倍数都标记为合数,就可以找到所有的质数。

  4. 米勒-拉宾素性检验:依靠不同的随机数,可以判断质数是否为合数,准确率高。

  5. 线性筛法:从小到大依次筛选质数,并标记其倍数为合数。

  6. 试除法(暴力算法):

  7. 素性检验

1.1.试除法(暴力算法):
#include <stdio.h>int isPrime(int n) 
{for (int i = 2; i < n; i++) {if (n % i == 0) {return 0;   // 不是质数}}return 1;   // 是质数
}int main() 
{int n;printf("请输入一个整数:");scanf("%d", &n);if (isPrime(n)) {printf("%d是质数\n", n);} else {printf("%d不是质数\n", n);}return 0;
}

在这里插入图片描述
在这里插入图片描述

1.2.优化试除法:
#include <stdio.h>
#include <math.h>int isPrime(int n) 
{for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) {return 0;   // 不是质数}}return 1;   // 是质数
}int main() 
{int n;printf("请输入一个整数:");scanf("%d", &n);if (isPrime(n)) {printf("%d是质数\n", n);} else {printf("%d不是质数\n", n);}return 0;
}

在这里插入图片描述
在这里插入图片描述

1.3.埃拉托色尼筛法:
#include <stdio.h>void eratosthenes(int n) 
{int prime[n + 1];for (int i = 2; i <= n; i++) {prime[i] = 1;}for (int i = 2; i * i <= n; i++) {if (prime[i]) {for (int j = i * i; j <= n; j += i) {prime[j] = 0;}}}printf("2");for (int i = 3; i <= n; i += 2) {if (prime[i]) {printf(", %d", i);}}printf("\n");
}int main() 
{int n;printf("请输入一个整数:");scanf("%d", &n);if (1 == n){printf("1不是质数\n");return 0;}printf("%d以内的所有质数:\n", n);eratosthenes(n);return 0;
}

在这里插入图片描述
在这里插入图片描述

1.4.米勒-拉宾素性检验:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>long long power(long long a, long long n, long long p) 
{long long ans = 1;while (n > 0) {if (n & 1) {ans = (ans * a) % p;}a = (a * a) % p;n >>= 1;}return ans;
}int miller_rabin(long long n, int k) 
{if (n == 2 || n == 3) {return 1;   // 质数}if (n == 1 || n % 2 == 0) {return 0;   // 非质数}long long d = n - 1;while (d % 2 == 0) {d /= 2; // 分解为 d * 2^r}for (int i = 0; i < k; i++) {long long a = rand() % (n - 3) + 2; // 2 ~ n-2 之间随机选取一个数 along long x = power(a, d, n);if (x == 1 || x == n - 1) {continue;}int flag = 0;   // 判断循环中是否需要继续// 执行 r-1 次循环,检验是否有 x^d, x^2d, …, x^(2^(r-1)*d) 都与 n-1 同余for (long long r = d; r != n - 1; r <<= 1) {x = (x * x) % n;if (x == 1) {return 0;   // 是合数}if (x == n - 1) {flag = 1;break;}}if (!flag) {return 0;   // 是合数}}return 1;   // 是质数
}int main() 
{long long n;int k;printf("请输入一个整数:");scanf("%lld", &n);printf("请设置测试次数 k:");scanf("%d", &k);int flag = miller_rabin(n, k);if (flag) {printf("%lld是质数\n", n);} else {printf("%lld不是质数\n", n);}return 0;
}

解释一下这里的测试次数k:

在算法中随机选择不同的基数进行多次检测。通过增加测试次数 k,可以提高算法的准确性,减少错误判定合数为质数的可能性。在每次测试中,随机选择不同的基数进行检测,如果所有测试都通过,那么被检测的数更有可能是质数。总之k 的值决定了算法进行随机测试的次数,通过多次测试提高了判定质数的可靠性。(一般来说k的值选取范围是5-15)

在这里插入图片描述
在这里插入图片描述

1.5.线性筛法:
#include <stdio.h>void linear_sieve(int n) 
{int prime[n + 1], cnt = 0;int factor[n + 1];for (int i = 2; i <= n; i++) {if (!prime[i]) {prime[i] = i;factor[i] = i;cnt++;}for (int j = 1; j <= cnt && prime[i] >= prime[j] && i * prime[j] <= n; j++) {prime[i * prime[j]] = prime[j];if (prime[i] == prime[j]) {factor[i * prime[j]] = factor[i] * factor[j];} else {factor[i * prime[j]] = factor[i] * prime[j];}}}printf("2");for (int i = 3; i <= n; i += 2) {if (prime[i] == i) {printf(", %d", i);}}printf("\n");
}int main() 
{int n;printf("请输入一个整数:");scanf("%d", &n);if (1 == n){printf("1不是质数\n");return 0;}printf("%d以内的所有质数:\n", n);linear_sieve(n);return 0;
}

在这里插入图片描述
在这里插入图片描述

1.6.费马小定理:

费马小定理是一种用于判断质数的方法。如果一个数 n n n 是质数,且 a a a 是小于 n n n 的任意正整数,则 a n − 1 ≡ 1 ( m o d n ) a^{n-1} \equiv 1 \pmod n an11(modn)

具体的判断方法为:随机选取一个整数 a a a,计算 a n − 1 m o d n a^{n-1} \bmod n an1modn 的值,如果等于1,则 n n n 可能是质数。

但是,存在一些合数也满足费马小定理,即被称为费马伪素数。因此,费马小定理不是完全可靠的判断方法。需要进行多次测试,才能提高正确率。

下面是使用费马小定理进行判断的代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>long long power(long long a, long long n, long long p) 
{long long ans = 1;while (n > 0) {if (n & 1) {ans = (ans * a) % p;}a = (a * a) % p;n >>= 1;}return ans;
}int fermat_primality_test(long long n, int k) 
{if (n == 2 || n == 3) {return 1;   // 质数}if (n == 1 || n % 2 == 0) {return 0;   // 非质数}for (int i = 0; i < k; i++) {long long a = rand() % (n - 2) + 2; // 2 ~ n-1 之间随机选取一个数 aif (power(a, n - 1, n) != 1) {return 0;   // 是合数}}return 1;   // 是质数
}int main() 
{long long n;int k;printf("请输入一个整数:");scanf("%lld", &n);printf("请设置测试次数 k:");scanf("%d", &k);int flag = fermat_primality_test(n, k);if (flag) {printf("%lld是质数\n", n);} else {printf("%lld不是质数\n", n);}return 0;
}

在这里插入图片描述
在这里插入图片描述

1.7.素性检验:

素性检验是一种比费马小定理更加精确的判断质数的方法,常用的有 Miller-Rabin 素性检验和 AKS 算法。

Miller-Rabin 素性检验已经在第四个示例中介绍过了,这里再介绍一下 AKS 算法。

AKS 算法是一种基于代数学理论的判断质数的算法,可以在多项式时间内实现。它的时间复杂度为 O ( log ⁡ 12 n ) O(\log ^{12} n) O(log12n),比 Miller-Rabin 算法还要慢,但是它的正确率非常高,可以判断非常大的质数。

AKS 算法的核心思想是利用柿子(binomial theorem)和模 p 下的同余关系,对多项式进行模运算,最终得到一个判断质数的结论。

这里不再给出 AKS 算法的代码实现,感兴趣的话可以自己百度一下。😉

2.在C语言中,求两个数的最大公约数的常见算法有以下几种:
  1. 辗转相减法
  2. 辗转相除法
  3. Stein算法
  4. 拓展
2.1.辗转相减法

辗转相减法也叫欧几里得算法,是求解两个正整数的最大公约数的一种简便算法,其基本思想是利用两数的差的绝对值不断递归,直到两数相等为止,此时所得的数即为最大公约数。

具体的实现过程为:

  1. 如果两个数相等,则它们的最大公约数即为它们本身;
  2. 如果其中一个数为0,则另一个数即为最大公约数;
  3. 如果两个数都不相等且都不为0,则将它们中较大的数减去较小的数,并用得到的差替换较大的数,然后回到第1步。

以下是使用辗转相减法求两个数的最大公约数的实现:

#include <stdio.h>int gcd(int a, int b) 
{if (a == b) {return a;}if (a == 0) {return b;}if (b == 0) {return a;}if (a > b) {return gcd(a - b, b);} else {return gcd(a, b - a);}
}int main() 
{int a, b;printf("请输入两个数:");scanf("%d %d", &a, &b);int g = gcd(a, b);printf("%d 和 %d 的最大公约数是 %d\n", a, b, g);return 0;
}

在这里插入图片描述
在这里插入图片描述

2.2.辗转相除法

辗转相除法(欧几里得算法)在C语言中的实现可以采用迭代或递归两种方式。

2.2.1.迭代实现:
#include <stdio.h>int gcd(int a, int b) 
{while (b != 0) { // 当b不为零时继续循环int temp = a % b; // 计算a除以b的余数a = b; // 将b赋值给a,准备下一轮迭代b = temp; // 将上一轮的余数赋值给b}return a; // 循环结束后,a即为最大公约数
}int main() 
{int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);// 确保num1总是较大的数,这样可以简化逻辑if (num1 < num2) {int temp = num1;num1 = num2;num2 = temp;}int result = gcd(num1, num2);printf("这两个数的最大公约数是:%d\n", result);return 0;
}

在这里插入图片描述

在这里插入图片描述

2.2.2.递归实现:
#include <stdio.h>int gcd(int a, int b) 
{// 当b为0时,a即为最大公约数if (b == 0)return a;else// 递归调用gcd函数,将b作为新的a,a除以b的余数作为新的breturn gcd(b, a % b);
}int main() 
{int num1, num2;printf("输入两个整数: ");scanf("%d %d", &num1, &num2);// 输出两个数的最大公约数printf("The GCD of %d and %d is %d\n", num1, num2, gcd(num1, num2));return 0;
}

在这里插入图片描述

在这里插入图片描述

2.3. Stein算法

Stein算法,也叫二进制 GCD 算法,是一种用于计算两个正整数的最大公约数的算法。它比辗转相除法更加高效,因为它的操作只涉及移位、加减运算和条件选择,消耗的时间和空间都比辗转相除法少。

具体的实现过程为:

  1. 把两个数都右移一位,直到两个数都为奇数;
  2. 如果a<b,则交换a和b;
  3. 计算d=a-b,如果d=0,则a即为最大公约数,结束;
  4. 把d右移一位,即d=d/2;
  5. 重复步骤3-4,直到d=1;
  6. 求出a和b的公共因子2的k次幂,即g=2^k,其中k是使a和b均为偶数的因子,把a和b都右移k位,此时就回到步骤1。

以下是使用Stein算法求两个数的最大公约数的实现:

#include <stdio.h>int gcd(int a, int b) 
{if (a == 0 || b == 0) {return a + b;}int k = 0;while ((a & 1) == 0 && (b & 1) == 0) {a >>= 1;b >>= 1;k++;}while ((a & 1) == 0) {a >>= 1;}do {while ((b & 1) == 0){b >>= 1;}if (a > b) {int t = b;b = a;a = t;}b -= a;} while (b != 0);return a << k;
}int main() 
{int a, b;printf("请输入两个数:");scanf("%d %d", &a, &b);int g = gcd(a, b);printf("%d 和 %d 的最大公约数是 %d\n", a, b, g);return 0;
}

Stein算法比辗转相减法和辗转相除法更加高效,特别是在处理大整数时。

在这里插入图片描述

在这里插入图片描述

2.4.Lehmer算法和Schönhage-Strassen算法

除了辗转相减法、辗转相除法和Stein算法外,还有更好的算法,例如,它们能够在O(N(logN)^2)的时间复杂度内计算出两个N位整数的最大公约数,但是实现起来比较复杂,需要涉及到高精度计算和复杂的数论知识。

Lehmer算法是一种基于欧几里得算法的改进算法,它利用了欧几里得算法的思想,但是通过一些优化使得执行次数更少,效率更高。它的基本思想是先对两个数进行预处理,然后再利用这些预处理结果进行计算。

Schönhage-Strassen算法是一种基于快速傅里叶变换的算法,它能够在O(N(logN)^2)时间复杂度内计算出两个N位整数的最大公约数。它的基本思想是把计算最大公约数的问题转化为计算多项式的问题,然后利用快速傅里叶变换进行多项式的乘法和除法。

2.4.1.Lehmer算法

下面是使用Lehmer算法求两个数的最大公约数的实现:

#include <iostream>
#include <vector>
using namespace std;// 求p^n
int pow(int p, int n)     
{int res = 1;for (int i = 0; i < n; i++) {res *= p;}return res;
}// 把n表示成p进制的形式,返回各个位的系数
vector<int> convert(int n, int p) 
{vector<int> digits;while (n > 0) {digits.push_back(n % p);n /= p;}return digits;
}// Lehmer算法
int lehmer(int a, int b) 
{if (a == 0 || b == 0) {return a + b;}int p = 10, q = pow(p, 1.5);vector<int> r = convert(a, p), s = convert(b, p);int n = r.size(), m = s.size();while (m > 0) {int t = n - m;int k = r[n - 1] * q + r[n - 2];int l = s[m - 1] * q + s[m - 2];if (r[n - 1] == s[m - 1] && k < l * q || k < l * q - 1) {t--;k = (k + p * r[n - 3]) * p + r[n - 4];}int u = (k - l) % q * pow(p, t);if (k < l) {u -= pow(p, t + 1);}r.erase(r.begin() + t, r.end());for (int i = 0; i < m - 1; i++) {r[i] -= u * s[i];if (r[i] < 0) {r[i] += p;r[i + 1]--;}}while (r.back() == 0) {r.pop_back();}n = r.size();swap(r, s);swap(m, n);}return s[0];
}int main() 
{int a, b;cout << "请输入两个数:";cin >> a >> b;int g = lehmer(a, b);cout << a << " 和 " << b << " 的最大公约数是 " << g << endl;return 0;
}

在这里插入图片描述
在这里插入图片描述

注意

我这个windows上面的wsl没有装这个头文件,大家可以在ubuntu虚拟机里面试一试,这个有时间再弄

2.4.2. Schönhage-Strassen算法

下面是使用Schönhage-Strassen算法求两个数的最大公约数的实现:

#include <iostream>
#include <vector>
#include <algorithm>
#include <complex>
using namespace std;const double PI = acos(-1);
typedef complex<double> comp;void bit_reverse_copy(const vector<comp>& a, vector<comp>& b) 
{int n = a.size();int p = 0;for (int i = 0; i < n; i++) {b[p] = a[i];for (int j = n / 2; (p ^= j) < j; j /= 2);}
}// 快速傅里叶变换
void fft(vector<comp>& a, int inv) 
{int n = a.size();vector<comp> b(n);bit_reverse_copy(a, b);for (int h = 1; h < n; h <<= 1) {for (int j = 0; j < n; j += h << 1) {comp w(1, 0);for (int k = 0; k < h; k++) {comp t = w * b[j + k + h];b[j + k + h] = b[j + k] - t;b[j + k] += t;w *= comp(cos(PI * inv * k / h), sin(PI * inv * k / h));}}}if (inv == -1) {for (int i = 0; i < n; i++) {b[i] /= n;}}a.swap(b);
}// 计算两个N位整数的最大公约数
int ss_gcd(string a, string b) 
{int n = a.size(), m = b.size();int N = 1;while (N < n + m) {N <<= 1;}vector<comp> A(N), B(N);for (int i = 0; i < n; i++) {A[i] = a[n - 1 - i] - '0';}for (int i = 0; i < m; i++) {B[i] = b[m - 1 - i] - '0';}fft(A, 1);fft(B, 1);vector<comp> C(N);for (int i = 0; i < N; i++) {C[i] = A[i] * B[i];}fft(C, -1);reverse(C.begin() + 1, C.end());while (C.size() > 1 && C.back().real() == 0) {C.pop_back();}string r;for (int i = C.size() - 1; i >= 0; i--) {r += char(C[i].real() + 0.5) + '0';}while (r.size() > 1 && r.back() == '0') {r.pop_back();}return stoi(r);
}int main() 
{string a, b;cout << "请输入两个数:";cin >> a >> b;int g = ss_gcd(a, b);cout << a << " 和 " << b << " 的最大公约数是 " << g << endl;return 0;
}

在这里插入图片描述

注意

我这个windows上面的wsl没有装这个头文件,大家可以在ubuntu虚拟机里面试一试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新可用GPT-3.5、GPT-4、Midjourney绘画、DALL-E3文生图模型教程【宝藏级收藏】

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

宋仕强论道之华强北电子交易中心(四十三)

最近中国电子CECC牵头的电子交易中心在前海挂牌&#xff0c;这给华强北带来了一些威胁&#xff0c;也蚕食了部分华强北市场。事实上&#xff0c;电子元器件市场是一个非常巨大且复杂的市场&#xff0c;包括了各种各样的产品和配套的服务。比如说存储产品这一块&#xff0c;标准…

在Overleaf中解决IEEE LaTeX模板不能显示中文问题

解决IEEE的Latex模板不能显示中文的问题 写在最前面编译器选择XeLatex导入CTeX包IEEE单栏转换为双栏如何在Overleaf中解决IEEE LaTeX模板显示中文问题&#xff1a;一些其他的补充引言问题描述准备工作为什么中文字符在IEEE LaTeX模板中显示有问题——了解LaTeX编码的基础概念 关…

写点东西《最佳 Web 框架不存在 》

写点东西《&#x1f947;最佳 Web 框架不存在 &#x1f6ab;》 TLDR&#xff1b;您选择的 Web 应用程序框架并不重要。嗯&#xff0c;它很重要&#xff0c;但并不像其他人希望您相信的那样重要。 2024 年存在如此多的库和框架&#xff0c;而且最好的库和框架仍然备受争议&…

C语言——小细节和小知识10

一、全局变量和局部变量 1、引例 当全局变量和局部变量名字相同的情况下&#xff0c;局部变量优先。 #include <stdio.h>int num 10;int main() {int num 0;printf("%d\n", num);return 0; } 运行结果 2、介绍 在C语言中&#xff0c;当局部变量和全局变…

高光谱分类论文解读分享之基于生成对抗性少数过采样的高光谱图像分类

IEEE TGRS 2022&#xff1a;基于生成对抗性少数过采样的高光谱图像分类 题目 Generative Adversarial Minority Oversampling for Spectral–Spatial Hyperspectral Image Classification 作者 Swalpa Kumar Roy , Student Member, IEEE, Juan M. Haut , Senior Member, IE…

【野火i.MX6NULL开发板】ARM-GCC 和开发板的 HelloWorld(ubuntu主机和野火开发板debian交叉编译)、开发板的/mnt里没文件

0、前言 参考资料&#xff1a; 《野火 Linux 基础与应用开发实战指南基于 i.MX6ULL 系列》PDF 第24章 参考视频&#xff1a; https://www.bilibili.com/video/BV1JK4y1t7io?p26&vd_sourcefb8dcae0aee3f1aab700c21099045395 注意&#xff0c;一定要记得把虚拟机的网络适配…

J3-DenseNet实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 环境步骤环境设置数据准备图像信息查看 模型构建模型训练模型效果展示 总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习…

接口自动化神器 apin【 快速入门篇】

关于自动化测试&#xff0c;这些年经历了太多的坑&#xff0c;有被动的坑&#xff0c;也有自己主动挖的坑&#xff0c;在这里做了一些总结。 一、apin 介绍及安装 1、什么是 apin apin是一个无需写代码&#xff0c;就可以进行接口自动化测试的框架&#xff0c;只需要通过jso…

【线路图】世微AP5160宽电压降压型恒流芯片 LED电源 带调光SOT23-6

这是一款14-18V 3A 电流的PCB设计方案. 运用的是世微AP5160 电源驱动IC,这是一款效率高&#xff0c;稳定可靠的 LED 灯恒流驱动控制芯片&#xff0c;内置高精度比较器&#xff0c;固定 关断时间控制电路&#xff0c;恒流驱动电路等&#xff0c;特别适合大功率 LED 恒流驱动。 …

59.说一下 spring 的事务隔离?

spring 的事务隔离有什么作用? 用来解决并发事务所产生一些问题,并发会产生什么问题? 1.脏读2.不可重复度3.幻影读事务隔离的概念 通过设置隔离级别可解决在并发过程中产生的那些问题分别举例说明 1.脏读 上述图表示:一个事务,读取了另一个事务中没有提交的数据,会在…

【AD-3D预览-颜色更换和模型操作】AD打开3D预览模式,PCB板子显示蓝色,如何更改为绿色

问题&#xff1a;AD软件的3D预览模式中&#xff0c;PCB的颜色和其他不一样&#xff0c;显示的是蓝色&#xff0c;而且正面可以看到走线&#xff0c;背面看不到 原因&#xff1a; 这是因为选择的查看模式不一样所导致的。 在这个位置可以查看当前所使用的模式是什么&#xff0…

IPKISS ------ 远程服务器 IPKISS 内置示例安装问题

IPKISS ------ 远程服务器示例安装问题 引言正文 引言 很多时候&#xff0c;如果我们在服务器上使用管理员权限安装了 IPKISS 证书&#xff0c;而我们使用个人账号登录服务器时有时候会显示如下界面&#xff1a; 我们会看到这个 PyCharm (Luceda Academy) 是灰色的。那么该怎…

高阶函数和函数的柯里化

一、高阶函数 定义&#xff1a; 如果一个函数符合下面2个规范中的任何一个&#xff0c;那该函数就是高阶函数&#xff1a; 1、若 A 函数&#xff0c;接受的参数是一个函数&#xff0c;那么 A 就可以称为高阶函数。2、若 A 函数&#xff0c;调用的返回值依然是一个函数&#x…

嵌入式行业算青春饭吗?

今日话题&#xff0c;嵌入式行业算青春饭吗&#xff1f;嵌入式行业的技术要求确实非常广泛&#xff0c;需要深厚的知识广度和深度。这意味着入行门槛较高&#xff0c;我们需要了解不仅是软件和硬件&#xff0c;还要熟悉底层接口和硬件信号的处理方式&#xff0c;了解数据在计算…

网络文件共享服务、FTP和yum仓库

目录 一、存储类型 1、存储类型一共分为三种&#xff1a; 2、三种存储架构的应用场景 二、FTP文本传输协议 1、FTP工作原理介绍 2、FTP数据连接模式 3、svftpd的安装和配置 4、vsftpd的配置作用 5、黑名单和白名单的使用&#xff08;简要介绍&#xff09; 三、YUM 1…

芯品荟 | 温控器、线控器市场调研报告

PART ONE 产品简介 一、什么是温控器、线控器 温控器\线控器属于工业测量及智能家居产品&#xff0c;目前主流的包括LCD段码屏、TFT液晶屏。 PART TWO 市场规模 智能家居线控器市场规模 智能家居已成为最具潜力的消费科技市场&#xff0c;2022年市场规模约为6515.6亿元。 …

微信小程序定义并获取日志/实时log信息

步骤一&#xff1a;开通实时日志 可以在开发者工具->详情->性能质量->实时日志&#xff0c;点击前往&#xff0c;在浏览器打开we分析界面&#xff1a; 也可登录小程序管理后台&#xff0c;点击统计进入we分析&#xff1a; 在we分析界面找到性能质量&#xff0c;打开实…

【提示学习论文七】Visual Prompt Tuning论文原理

文章目录 Visual Prompt Tuning&#xff08;VPT&#xff09;文章介绍Abstract1 Introduction2 Related Work3 Approach3.1 准备工作3.2 Visual-Prompt Tuning(VPT)3.2.1 VPT-Shallow3.2.2 VPT-Deep3.2.3 Storing Visual Prompts 存储视觉提示 4 实验主要结果模型设计变体的消融…

抠图换背景的工具有吗?分享4款好用的!

在数字时代&#xff0c;设计已经成为了我们生活中不可或缺的一部分。无论是为了工作还是个人爱好&#xff0c;我们都需要掌握一些设计技能。其中&#xff0c;抠图换背景是一项非常重要的技能。那么&#xff0c;有哪些工具可以帮助我们快速、准确地完成这项任务呢&#xff1f;今…