分解质因数
题目
-
问题描述
求出区间[a,b]中所有整数的质因数分解。 -
输入说明
输入两个整数a,b。
2<=a<=b<=10000 -
输出说明
每行输出一个数的分解,形如k=a1a2a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看范例) -
输入范例
3 10
-
输出范例
3=3
4=22
5=5
6=23
7=7
8=222
9=33
10=25
解题思路
- 本题思路是利用 试除法 + 模拟分解 来求区间内每个整数的质因数分解。对于区间 [a,b] 中的每一个整数 k,我们从最小的质数 2 开始,不断尝试用当前数去除 k。如果能够整除,则说明该数是一个质因数,将其记录下来,并让 k 不断除以该因子,直到不能整除为止;然后继续尝试下一个可能的因子(递增)。这个过程相当于从小到大"剥离"质因数,因此天然满足题目要求的 从小到大排序。当试除到 根号k 后,如果剩余的 k>1,说明它本身也是一个质数,需要单独输出。对区间内每个数重复上述过程,并按照指定格式输出即可。
整体代码
cpp
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
for (int k = a; k <= b; k++)
{
cout << k << "=";
int n = k;
bool first = true; // 控制是否输出'*'
for (int i = 2; i * i <= n; i++)
{
while (n % i == 0)
{
if (!first) cout << "*";
cout << i;
n /= i;
first = false;
}
}
// 如果最后剩下的n>1,说明是一个质数
if (n > 1)
{
if (!first) cout << "*";
cout << n;
}
cout << endl;
}
return 0;
}
注意事项
- 注意在分解过程中 n 会不断变小,因此循环条件用的是当前的 n。
英文段落翻译
自己翻译
Transformer模型是一个基于注意力机制,并且已经在自然语言处理领域取得了重要成就的一个神经网络结构。不像传统的现成的神经网络,Transformer不依靠一步一步的排序处理。他们使用自我注意机制来同时处理整个队列。这种结构不仅提升了模型运行平行的计算的能力,并且使得它能够更高效的捕捉大范围的依赖。在机器翻译任务中,Transformer模型能够积极的按照在一个句子中不同单词之间的关系安排注意力权重由此产出更准确的翻译。而且,Transformer结构已经被广泛应用在例如生成文本语音识别,甚至图像处理这些任务中了。在最近几年许多大规模预训练语言模型都是在Transformer结构上建造的,这已经极大的加速了人工智能技术的提高。
单词打卡

下一篇
待续