学习编程的N种境界(青铜如何成为最强王者)

(素数求解的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行代码?当然这只是我的推测。但是一个合格的程序员小白,应该熟练的掌握学过的知识,那么你的段位才会变高,那么你才有可能从青铜变为最强王者。

   

猜你喜欢

转载自blog.csdn.net/USA_AM_1966/article/details/73924155