共计 2207 个字符,预计需要花费 6 分钟才能阅读完成。
CE: 求素数
求 0~N 内的素数。(N<=100000)
输出
N
输入
[0~N] 之间的所有素数,一个素数占一行。
样例输出 Copy
100
样例输入 Copy
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
//#include<iostream>
//#include<algorithm>
//#include<cstring>
//#include<cmath>
//using namespace std;
///*
// 思路 1):因而判断一个整数 m 是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除, 如果都不能被整除,那么 m 就是一个素数。// 思路 2):另外判断办法还能够简化。m 不用被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 根号 m 之间的每一个整数去除就能够了。// 如果 m 不能被 2 ~ 间任一整数整除,m 必然是素数。例如判断 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,// 因为都不能整除,能够断定 17 是素数。// 起因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必然有一个小于或等于,另一个大于或等于。// 例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=√16,因而只需断定在 2~4 之间有无因子即可。//*/
//int main(){
// int n = 0,k,j;
// scanf("%d",&n);
// bool f;
// for(j = 2; j <= n; j++){
// f = true;
// k = (int)sqrt((double)j);// 此处求根简化计算,只需使 j 与 2 到 根号 m 相除即可
// for(int i = 2; i <= k; i++){//// for(int i = 2; i <= j - 1; i++){// 这样也能够,使 j 与 2 到 j -1 相除
// if(j % i == 0){
// f = false;
// break;
// }
// }
// if(f){// printf("%d\n",j);
// }
// }
// return 0;
//}
CF: 水仙花数
春天是鲜花的节令,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其自身,比方:153=1^3+5^3+3^3。
当初要求输入所有在 m 和 n 范畴内的水仙花数。
输出
两个整数 m 和 n(100<=m<=n<=999)。
输入
要求输入所有在给定范畴内的水仙花数,就是说,输入的水仙花数必须大于等于 m, 并且小于等于 n,如果有多个,则要求从小到大排列在一行内输入,之间用一个空格隔开;
如果给定的范畴内不存在水仙花数,则输入 no。
样例输出 Copy
300 380
样例输入 Copy
370 371
水仙花数作为一个经典题目,我目前晓得的就有 3 种解法,上面贴其中一种解法
//#include<iostream>
//#include<algorithm>
//#include<cstring>
//#include<cmath>
//using namespace std;
///*
//
//*/
//int main(){
// int n = 0,m = 0,count;
// while(scanf("%d %d",&m,&n) != EOF){
// count = 0;
// for(int i = m; i <= n; i++){
// int a = i % 10;// 求个位数的值
// int b = i / 10 % 10;// 求十位数的值
// int c = i / 100 % 10;// 求百位数的值
// if((a * a * a + b * b * b + c * c * c) == i){// printf("%d",i);
// count ++;
// }
// }
// if(count == 0){// printf("no");
// }else{// printf("\n");
// }
// }
// return 0;
//}
CG: 人见人爱 A ^ B
求 A^B 的最初三位数示意的整数。阐明:A^B 的含意是“A 的 B 次方”
输出
输出数据蕴含多个测试实例,每个实例占一行,由两个正整数 A 和 B 组成(1<=A,B<=10000),如果 A =0, B=0,则示意输出数据的完结,不做解决。
输入
对于每个测试实例,请输入 A^B 的最初三位示意的整数,每个输入占一行。
样例输出 Copy
1 1
7 7
3 7
0 0
样例输入 Copy
1
543
187
//#include<iostream>
//#include<algorithm>
//#include<cstring>
//#include<string.h>
//#include<cmath>
//using namespace std;
///*
//
//*/
//int main(){
// int a = 0,b = 0;
// while(scanf("%d %d",&a,&b),a&&b){// if(a == 0 && b != 0){// printf("0\n");
// }
// if(a != 0 && b == 0){// printf("1\n");
// }
// if(a != 0 && b != 0){
// int s = a;
// int t = b - 1;//a^b 就是 a * (b - 1)个 a
// while(t--){
// s = s * a;//s* t 个 a
// s %= 1000;// 此处取余起因有二: 一是一个数对 1000 取余能够失去后三位(能够类推 %100 后两位)
// // 二是不心愿等到 s 乘完很大之后才进行这步,可能导致溢出,借助 %1000 升高 s 长度而不扭转后三位后果
// }
// printf("%d\n",s);
// }
//
// }
// return 0;
//}
正文完