zoukankan      html  css  js  c++  java
  • 每日一小练——求质数

    上得厅堂,下得厨房。写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练。


    题目:求质数


    内容:

    试编写一个程序,找出前N个质数。假设没有进一步要求,这不是难题。

    但在此希望从所知的、使用除法的方法中,用最快的办法来编敲代码。


    我的解法:上来没多想,打开vs2013就敲了起来。问题果然非常easy,分分钟就超神。

    奥。不正确就攻克了!

    这个题目确实非常easy,先看看常规解法吧!

    #include <iostream>
    #include <math.h>
    #define endNum 200
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	bool isPrime(int x);
    	cout << endNum << "以内的之所以素数为:" << endl;
    	for (int i = 2; i < endNum; i++)
    	{
    		if (isPrime(i))
    			cout << i << "  ";
    	}
    	getchar();
    	return 0;
    }
    
    bool isPrime(int x)
    {
    	int endP = sqrt(x);
    	bool rusult = true;
    	for (int i = 2; i <= endP; i++)
    	{
    		if ((x % i) == 0)
    		{
    			rusult = false;
    		}
    	}
    	return rusult;
    }
    

    实验结果是



    只是题目中要求了思索除法范围内最快的算法。事实上就是在循环中,降低以至不为质数的值的除法运算。比方2的倍数,3的倍数。和5的倍数。这样循环的递增就不是依照+1递增了,而已2,4,2,4....循环加法递增,这样能够降低循环三分之二的工作量。

    改价算法例如以下

    #include <iostream>
    #include <math.h>
    #define endNum 200
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	bool isPrime(int x);
    	int addNum = 2;
    	cout << endNum << "以内的之所以素数为(改进算法):" << endl;
    	cout << "2  3  5  ";
    	for (int i = 7; i < endNum; )
    	{
    		if (isPrime(i))
    			cout << i << "  ";
    		addNum = 6 - addNum;
    		i += addNum;
    	}
    	getchar();
    	return 0;
    }
    
    bool isPrime(int x)
    {
    	int endP = sqrt(x);
    	bool rusult = true;
    	for (int i = 2; i <= endP; i++)
    	{
    		if ((x % i) == 0)
    		{
    			rusult = false;
    		}
    	}
    	return rusult;
    }
    

    实验结果:



    最后要感谢Clover_tjp同学提出的建议。我会在以后的每日一下练中加以改进,欢迎大家提出自己的意见哈!


    欢迎大家增加每日一小练,嘿嘿!

    每天练一练。日久见功夫,加油。


                -End-

    參考文献:《c语言名题精选百则》



  • 相关阅读:
    JAX XML 实例
    javascript获取浏览器的全部信息
    如何防止ASP.NET应用程序中的SQL注入安全漏洞
    测试Web应用程序是否存在跨站点脚本漏洞()
    C# 中的委托和事件详解(四)
    C# 中的委托和事件详解(一)
    远程启动SSIS包
    AX2012学习笔记Date Effectiveness(有效期间)
    AX2010学习笔记Surrogate Key(代理键)
    SSRS 2005 400 Bad Request
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5075598.html
Copyright © 2011-2022 走看看