程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> codeforces T-primes 230 B 素數題解

codeforces T-primes 230 B 素數題解

編輯:C++入門知識

codeforces T-primes 230 B 素數題解


 

本題其實是簡單的找規律問題,規律一看就明白了。

這個就是需要總結問題的思維能力。同時需要注意可能的溢出問題。

規律總結錯了,溢出問題又錯了,結果就不能一次性AC了。

注意:靜態內存和全局內存,即棧內存,比動態內存,即堆內存,要大;動態分配一個百萬的bool數組也會程序崩潰的。

 

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
using namespace std;

const int MAX_N = (int)1E5+1;
const int MAX_M = 1000001;
bool primes[MAX_M];

void getPrimes()
{
	memset(primes, 0, sizeof(bool)*MAX_M);
	primes[0] = primes[1] = 1;
	for (int i = 2; i < MAX_M; i++)
	{
		if (!primes[i])
		{
			for (int j = i<<1; j < MAX_M; j+=i)
			{
				primes[j] = true;
			}
		}
	}
}

int main()
{
	getPrimes();
	int n;
	long long num;
	while (scanf(%d, &n) != EOF)
	{
		for (int i = 0; i < n; i++)
		{
			scanf(%I64d, &num);
			long long t = (long long) sqrt((double)num);
			if (t * t == num && !primes[t]) puts(YES);
			else puts(NO);
		}
	}
	return 0;
}


 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved