青铜如何成为最强王者)"/>
学习编程的N种境界(青铜如何成为最强王者)
目录
素数求解的N种境界
境界1(需求1)
境界2(需求1)
境界3(需求1)
境界4(需求1)
境界5(需求1)
附赠一个经典程序
总结与分析
感悟:
素数求解的N种境界
*引子
《俺的招聘经验【4】:通过笔试能看出啥?》 【 思路和想法】》【对错】
试除法+初级筛法
(需求1)||(需求2)
*试除法
境界1(需求1)
#include<stdio.h> int main() { int i,k;int count=0;for(i=100;i<=200;i++){for(k=2;k<i;k++){ if(i%k==0) break; }if(k==i) printf("%d是素数\n",i); else printf("%d不是素数\n",i);count++; }printf("\n%4d",count); system("pause"); return 0; }
境界2(需求1)
#include<stdio.h> int main() { int i,k;int count=0;for(i=101;i<=200;i+=2){ // i= 2~i for(k=2;k<i;k++){ if(i%k==0) break; }if(k==i) printf("%d是素数\n",i); else printf("%d不是素数\n",i);count++; }printf("\n%4d",count); system("pause"); return 0; }
境界3(需求1)
#include<stdio.h> int main() {int i,k;t count=0;for(i=101;i<=200;i+=2){ for(k=2;k<i/2;k++){ if(i%k==0) break; }if(k==i) printf("%d是素数\n",i); else printf("%d不是素数\n",i);count++; }printf("\n%4d",count); system("pause"); return 0; }
境界4(需求1)
#include <stdio.h> #include <math.h>int main() { int i = 0; int count = 0; for(i=100; i<=200; i++) { int j = 0; for(j=2; j<=sqrt(i); j++) { if(i%j == 0) { break; } } if(j>sqrt(i)) { count++; printf("%d ", i); } } printf("\ncount = %d\n", count); return 0; }
境界5(需求1)
#include <stdio.h> #include <math.h>int main() { int i = 0; int count = 0; for(i=101; i<=200; i+=2) { int j = 0; for(j=2; j<=sqrt(i); j++) { if(i%j == 0) { break; } } if(j>sqrt(i)) { count++; printf("%d ", i); } } printf("\ncount = %d\n", count); return 0; }
&补充说明(这因该是需求1的几种境界,需求2自己拓展)
附赠一个经典程序
#include<stdio.h> #include<math.h> int main() { int n,i,k; printf("please enter a integer number:n="); scanf("%d",&n); k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0)break; if(i<=k) printf("%d is not a prime number.\n",n); else printf("%d is a prime number.\n",n); return 0; }
总结与分析
*筛法(估计素数个数求解公式x/ln(x)误差小于15%范围越大,误差越小)
*存储容器
境界1(构造整形容器)
100~200所有素数,除去所有合数剩下的就是素数(15*15==225)
思想:筛去2,3,5,7,11,13的倍数,剩下的就是素数
境界2(布尔型容器)
境界3(按位(bit)存储)
感悟:
王国维在《人间词话》说:古之成大事业、大学问者,必经过三种境界:“昨夜西风凋碧树。独上西楼,望尽天涯路。”此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境也。
福尔摩斯说:“我认为人的大脑原本像一间空空的屋子,必须有选择地用一些家具填满它。只有笨蛋才把他碰到的各种各样的破烂都塞进去。这样的话,那些可能用得上的知识就被挤了出来;或者,充其量也只是把那些破烂同其它东西混杂在一块儿。结果,在需要时却难以找到了。因此,一个善于工作的人,对于将什么东西纳入自己的头脑里是非常仔细的。他只会容纳那些工作时用得着的工具,而且将这些工具分门别类,安排得井然有序。如果认为这间屋子的墙壁富有弹性,可以随意扩展,那就大错特错了。毫无疑问,总有一天,当你增加点滴知识时,却把从前熟悉的知识给忘记了。因此,不要让无用的信息挤掉那些有用的信息,这一点至关重要。”这句话我不敢苟同,但我却可以这样理解。假如将人的大脑比作电脑,福尔摩斯所说的房子就像电脑的寄存器一样,如果将常用的知识,技能都放在寄存器里,当然可以极大地提高效率。就像《大脑与思维》所说的那样,人的大脑存储空间大到无法想象,人脑的记忆容量的字节数10后边跟8432个零。
我认为所有的语言都是相通的,学习任何语言的思路都是相同的。想要写出优美的文章,你得会写出优美的句子,要写出优美的句子,你得懂得华丽的词藻,要懂得华丽的词藻,你的认识许多许多字。学习编程语言亦是如此,如果一个汉字代表一行代码,正常本科生应该掌握3500个汉字(文科4000,汉语专业6500),那么一个合格的程序员是不是也应该掌握3500行代码?当然这只是我的推测。但是一个合格的程序员小白,应该熟练的掌握学过的知识,那么你的段位才会变高,那么你才有可能从青铜变为最强王者。
更多推荐
学习编程的N种境界(青铜如何成为最强王者)
发布评论