素数
问题描述
明明的爸爸是一位数学家,明明受他爸爸的影响从小就喜欢数学,经常向他爸爸学习或请教数学问题。一天,明明问他爸爸什么是素数,明明的爸爸回答说:"首先,素数都是大于1的自然数;其次,素数是只能被1和其本身整除的数。例如'3'这个数,它只能被1和3这两个整数整除,因此'3'就是素数;但是'4'就不是素数,因为4除了能被1和4整除外,还能被2整除,因此'4'就不是一个素数。"明明对于爸爸的回答很满意,也很快明白了素数的定义。于是明明的爸爸就问明明:"明明,你现在知道了什么是素数,那我现在给你一个整数区间,你能告诉我在这个区间里,一共有多少个素数吗?" 例如:一个区间为[1,10],则在这个区间里一共有2、3、5、7,总共4个素数。 明明想了想,觉得这很简单,就说:"没问题。"于是明明爸爸就给了明明一个很大的区间,这下明明有点犯难了,由于区间太大,一个一个算过了会很花时间。聪明的明明想到了你,你总是乐于助人。明明想让你帮他写一个程序,用来计算在某一个整数区间内一共有多少个素数。 明明的问题可以归结为:给你一个整数区间,求出在这个区间里共有多少个素数。
个人总结
- 遍历区间,判断是否是素数。若是素数则输出,若不是素数则下一个
cpp
#include <iostream>
//#include <vector>
//#include <string>
//#include <algorithm>
#include <cmath>
//#include <iomanip>
//#include <set>
//#include <sstream>
//#include <bits/stdc++.h>
using namespace std;
bool issushu(int n){
if(n < 2){
return false;
}
if(n == 2){
return true;
}
for(int i = 2; i <= sqrt(n); i++){
if(n % i == 0){
return false;
}
}
return true;
}
int main(){
int a,b;
while(cin >> a >> b){
int count = 0;
for(int i = a; i <= b ; i++){
if(issushu(i)){
count ++;
}
}
cout << count << endl;
}
return 0;
}
杨辉三角
问题描述
还记得中学时候学过的杨辉三角吗?
基本的特征是:
前提:端点的数为1.
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
你可以参考以下的图形:

个人总结
-
杨辉三角形在i == 0和i == j时为1
-
其余直接左上和正上相加即可
-
二维数组vector的定义要掌握
cpp
vector <vector<int>> num(n,vector<int>(n,0))
//注意,不是vector <vector<int>> num(n,vector<int> num<n,0>)
cpp
#include <iostream>
#include <vector>
//#include <string>
//#include <algorithm>
#include <cmath>
//#include <iomanip>
//#include <set>
//#include <sstream>
//#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
while(n--){
int lenth;
cin >> lenth;
int num[20][20];
for(int i = 0;i < lenth;i++){
for(int j = 0; j < lenth;j++){
if(j == 0 || (i == j)){
num[i][j] = 1;
}
else{
num[i][j] = num[i-1][j-1] + num[i-1][j];
}
}
}
int first = 1;
for(int k = 0;k < lenth;k ++){
for(int q = 0;q < lenth;q++){
if(first){
if(q < k){
cout << num[k][q];
}
else if(q == k){
cout << num[k][q] << endl;
}
first = 0;
}
else{
if(q < k){
cout << num[k][q] << " ";
}
else if(q == k){
cout << num[k][q] << endl;
}
}
}
}
cout << endl;
}
return 0;
}
矩阵问题
问题描述
从键盘上输入一个整数N,按以下规律输出一个(2N+1)*(2N+1)的矩阵:
对角线的值为1,
上半三角区域值为2,
下半三角区域值为3,
左半三角区域的值为4,
右半三角区域的值为5。
个人总结
- 二维数组划分成四个板块和两个板块
两个板块:
正上下三角下标,上三角i<j,下三角一个i>j
副上下三角下标,上三角i+j < n,上三角i+j>n
正对角线i+j = n
副对角线i == j
cpp
#include <iostream>
#include <vector>
//#include <string>
//#include <algorithm>
#include <cmath>
//#include <iomanip>
//#include <set>
//#include <sstream>
//#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin >> n){
int num = 2*n + 1;
int array[num][num];
for(int i = 0; i < num ; i++){
for(int j = 0; j < num ; j++){
if(i == j || (i + j == num - 1)){
array[i][j] = 1;
}
else if(i < j){
if(i + j > num - 1){
array[i][j] = 5;
}
if(i + j < num - 1){
array[i][j] = 2;
}
}
else if(i > j){
if(i + j > num - 1){
array[i][j] = 3;
}
if(i + j < num - 1){
array[i][j] = 4;
}
}
}
}
for(int i = 0;i < num;i++){
bool first = true;
for(int j = 0; j < num ;j++){
if(first){
cout << array[i][j];
first = false;
}else{
cout << " " <<array[i][j] ;
}
}
cout << endl;
}
}
return 0;
}
计算机英语翻译
2.早期的计算机
模拟的计算机开始被建造于19世纪晚期。早期的模型通过多种rotating shafts (螺旋轴)和 gears(齿轮)计算。解决等式上数字的概值问题是特别困难的,在任何其他方式被这些机器(对于那些用其他方法无法解决的方程式,人们利用这类机器来求得其数值近似解)。Lord Kelvin创造了一个机器的整齐(潮汐)预测器,他可是一个特殊的分析计算器(实质上就是一台专用模拟计算机)。在第一次世界大战和第二次世界大战期间,机器的,和之后的电子分析计算机系统被用作torpedo(广泛应用于潜艇的鱼类航向预测,以及飞机的轰炸瞄准控制)课程分析器在submarines和作为bomsight控制器在aircraft中,还有一种系统被设计去预测密西西比河春天的洪水。
Analogue adj.模拟的
rotating shafts 螺旋轴
gears n.齿轮
approximation n.近似解
tide n.潮汐
单词打卡
