新博第一篇,思考的重要性与求质数算法
微博开通后的第一篇文章,哈哈,我终于也有博客了~
废话不多说,直接上感悟。
前两天在等待博客的申请中,浏览博问时看到了一个问题,引发了万千思绪啊,在这里记录一下,不是为了记录算法,而是为了提醒小伙伴们:虽然我们的最终目的是实现代码,但是思考的过程也同样很重要!
就像我们开发组里老大说的那样:一个好的开发只有30%的时间实在写,而其余70%的时间都是在想,不要仅仅只做一个coder。
下面我们开始思考:
问题是这样的:求一个给定区间内的质数。
1、什么是质数?只能被1跟自己整除的数,也叫素数。
2、通过两层循环来实现。第一层循环用来循环需要做判断的数,第二层循环,则进行对该数是否为质数进行判断。
3、同时我们需要考虑到,只要第二次循环中判断出一次不是质数,那么该数就肯定不会是质数了。
4、于是我们可以考虑在每次外层循环开始时,使用一个布尔值变量来记录该数是否为质数,在内层循环中,只要判断一次非质数,那么我们就直接记录为非质数
5、最后,我们在内层循环全部结束后进行一次if判断该数最终是否为质数。
6、上代码:
javascript:
function doIt(min,max) { //声明一个布尔值变量:记录否为是质数。 var isTrue for(var i = min; i <= max; i++) { //每次循环开始,重置一次是否为质数。 isTrue = true; for(var j = 2; j < i; j++){ if(i % j == 0){ //除于==0说明有能被整除的数,那么不是质数,直接将该数记录为非质数。 isTrue = false; break; } } //内层循环结束后,判断最终结果,到底是否为质数并打印出来。 if(isTrue){ console.log(i); } } } doIt(101,200);
typescript:
class getPrimeNumber { private isTrue: boolean; private primeNumberList: number[] = []; getPrimeNumber(min: number, max: number): number[] { for (let i = min; i <= max ; i ++) { this.isTrue = true; for (let j = 2; j < i; j ++) { if(i % j == 0) { this.isTrue = false; break; } } if(this.isTrue){ this.primeNumberList.push(i); } } return this.primeNumberList } } let primeNumberList = new getPrimeNumber().getPrimeNumber(101, 200); console.log(primeNumberList);
java:
public class GetPrimeNumber { private boolean isTrue; public void getPrimeNumber(int min, int max) { for(int i = min; i <= max; i ++){ isTrue = true; for(int j = 2; j < i; j ++){ if(i % j == 0){ isTrue = false; break; } } if(isTrue){ System.out.println(i); } } } public static void main(String []args) { GetPrimeNumber gpn = new GetPrimeNumber(); gpn.getPrimeNumber(101, 200); } }
思路真的很重要,虽然这对于我们来说只是一个简单的算法。
欢迎大家来吐槽,或者发表您的见解^o^。