判断素数的方法

素数

不知道写些什么,顺便熟悉下markdown的语法,就写个判断素数的算法吧,太菜了,见谅

最朴素的做法

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x;
	int flag = 0;
	cin >> x;
	for(int i=2;i<x;i++)
		if (x%i == 0)
		{
			flag = 1;
			break;
		}
	if (flag == 1)
		cout << "0";//不是素数
	else
		cout << "1";
}






这是最朴素的算法了,正常人都会做

那么怎么优化呢,仔细思考会发现根本不用遍历到本数字,好像到$ \frac 1 2 $就行了,那么代码就是

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x;
	int flag = 0;
	cin >> x;
	for(int i=2;i<=x/2;i++)
		if (x%i == 0)
		{
			flag = 1;
			break;
		}
	if (flag == 1)
		cout << "0";//不是素数
	else
		cout << "1";
}


貌似还可以优化,仔细算算好像只需要到 $ \sqrt x $ 就行惹,所以循环就里面 $ \frac 1 2 $ 改成 $ \sqrt x $ 就行了,很简单

暂时先记这么多惹,熟悉熟悉..

posted @ 2019-01-09 15:11  ~abc~  阅读(326)  评论(0)    收藏  举报