2.22打卡day9
先写一个判断素数的函数,注意 i <= sqrt(x),不能落下“=”。从2到a/2循环,且取不到a/2,就不会出现重复的拆法,且两个素数相同的情况也排除了。然后判断 (isPrime(i) and isPrime(a-i)),如果满足,就加一种拆法。i+=2) { //<=,“=”不能落下,落下就出现错误,比如9int main()int T;cin>>T;int a;cin>>a;int cn
62.分拆素数和
问题描述
把一个偶数拆成两个不同素数的和,有几种拆法呢?
说明:
比如10,可以拆成3+7和5+5以及7+3,
但是3+7与7+3相同,只算一种,5+5由于两个素数相同,不计算在内。
因此,10的拆法只有一种。
个人总结
先写一个判断素数的函数,注意 i <= sqrt(x),不能落下“=”。从2到a/2循环,且取不到a/2,就不会出现重复的拆法,且两个素数相同的情况也排除了。然后判断 (isPrime(i) and isPrime(a-i)),如果满足,就加一种拆法。
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int x){
if (x<=1) return false;
if (x==2) return true;
if (x%2==0) return false;
for (int i = 3; i <= sqrt(x); i+=2) { //<=,“=”不能落下,落下就出现错误,比如9
if (x%i==0) return false;
}
return true;
}
int main()
{
int T;
cin>>T;
while (T--){
int a;
cin>>a;
int cnt=0;
for (int i = 2; i < a/2; ++i) {
if (isPrime(i) and isPrime(a-i)){
cnt++;
}
}
cout<<cnt<<endl;
}
return 0;
}
63.哥德巴赫猜想
问题描述
歌德巴赫猜想指出:任何一个大于2的偶数,都可以表示成两个素数的和。例如:8 = 3+5, 44 = 13+31等。试编程在6至100范围内验证歌德巴赫猜想。
个人总结
同样先写一个判断素数的函数。然后还是从2到a/2循环,这次可以取到a/2,如6=3+3。要求如果有多组结果,输出的第一个素数要求最小。所以只要有满足 (isPrime(i) and isPrime(a-i)),就输出i和a-i两个数,并跳出循环即可。
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int x){
if (x<=1) return false;
if (x==2) return true;
if (x%2==0) return false;
for (int i = 3; i <= sqrt(x); i+=2) {
if (x%i==0) return false;
}
return true;
}
int main()
{
int n;
cin>>n;
while (n--){
int a;
cin>>a;
for (int i = 2; i <= a/2 ; ++i) {
if (isPrime(i) and isPrime(a-i)){
cout<<i<<" "<<a-i<<endl;
break;
}
}
}
return 0;
}
64.N的倍数
问题描述
明明的爸爸在研究一个复杂的数学问题,研究了很长时间都没有结果。明明看见后就问爸爸在研究什么。明明的爸爸回答说:“我在研究一个整数的倍数问题,想找到某个数的倍数……”明明还没有等他爸爸说完,就抢着说:“这不是很简单嘛,你把这个整数乘以1,乘以2,……,就能得到很多的倍数呀。”明明的爸爸当然知道这种方法,但是他接着说:“这样的方法找倍数当然容易,但是我找的倍数有一个特点,那个倍数只能由0或1组成,且应该尽量的小。例如一个自然数2,它符合要求的那个倍数就是10。”这下明明明白为什么爸爸研究了那么多时间都还没有研究出结果了,因为随着数字的增大,找到它的符合要求的倍数越来越难。明明想帮他爸爸解决这个问题,于是他来求助于你,能否帮他爸爸写一个程序,来求一个整数的倍数,倍数仅有0或1组成,且要尽可能小。 明明的问题可以归结为:任意给定一个自然数N,寻找一个M,要求M是N的倍数,且它的所有各位数字都是由0或1组成,并要求M尽可能小。
个人总结
先写一个判断一个数是否由0或1组成的函数,一开始写成了 if((char)k != '0' and (char)k != '1'),这是错误的,如果要将数字0-9转字符,k+‘0’即可,而本题直接整数间比较就可以了,但也发现了自己的一个误区。主程序中,n分别乘1,乘2,...,直到第一个满足条件的倍数就是m。
#include <bits/stdc++.h>
using namespace std;
//判断一个数是否由0或1组成
bool func(int n){
int k;
while (n>0){
k = n % 10;
if (k!=0 and k!=1){
return false;
}
// 法2:数字0-9 转 字符 再比较,也可以
// if ((k+'0')!='0' and (k+'0')!='1'){
// return false;
// }
//不能写成if((char)k != '0' and (char)k != '1')
//例如,(char)9是把整数9强制转换成字符类型,得到的是ASCII码为9的字符,而不是字符‘9’
n /= 10;
}
return true;
}
int main()
{
int n;
while (cin>>n){
int m=1;
while (true){
if (func(n*m)){
cout<<n*m<<endl;
break;
}
m++;
}
}
return 0;
}
计算机英语刘艺第五版unit12 英语翻译
图12B-1:AR使用人类用户和计算机系统之间的反馈循环。用户观察AR显示并且控制视角。系统追踪用户的视角,将现实世界的姿态与虚拟内容进行配准,并且呈现情境可视化。
三、应用例子
在这个章节中,我们通过审查一些例子来继续探索AR,其中不仅展示了AR技术,还展示了该技术的应用。除了以下例子外,还存在许多其他具体的应用可能性,比如AR用于工厂和建筑,xx,导航和游戏。
1.维护和训练
理解事物是如何工作的,并学习如何聚集、分散或修理它们,在许多职业中都是一个重要的挑战。维护工程师经常花大量时间学习xx和文件,因为记住所有流程的细节几乎是不可能的。然而,AR可以把提供指导,直接添加到工人的视野范围。这可以提供更有效的训练,但更重要的是,它允许缺乏训练的人也能正确地完成工作。
AI翻译对比
图12B-1:AR利用人类用户与计算机系统之间的反馈循环。用户观察AR显示并控制视角。系统追踪用户的视角,将现实世界中的姿态与虚拟内容进行配准,并呈现情境化的可视化内容。
III. 应用示例
在本节中,我们将通过考察几个示例来继续探索 AR,这些示例展示了 AR 技术及其应用。除了以下示例外,还存在许多其他具体的应用可能性,例如用于工业和建筑、外科手术、导航以及游戏的 AR。
1. 维护与培训
理解事物的工作原理,并学习如何组装、拆卸或修理它们,是许多职业面临的重要挑战。维护工程师常常需要投入大量时间研读手册和文档,因为详细记住所有操作流程往往是不可能的。然而,AR可以将操作指令直接叠加显示在工人的视野中。这可以提供更有效的培训,但更重要的是,它能让接受过较少培训的人员也能正确地完成工作。
计算机英语单词扇贝打卡

更多推荐



所有评论(0)