素数是编程中经常需要用到的。作为学习Python的示例,下面是一个高效求解一个范围内的素数的程序,不需要使用除法或者求模运算。 1 #coding:utf-8 #设置python文件的编码为utf-8,这样就可以写入中文注释 2 def primeRange(n): 3 myAr...
分类:
编程语言 时间:
2014-07-09 21:47:08
阅读次数:
294
1 常规判定方法
素数判定问题就是对给定的正整数n判定是否为素数。所谓素数,是指恰好有2个约数的整数。因为n的约数都不超过n,所以只需要检查2~n-1的所有整数是否整除n就能判定是不是素数。不过,我们还能进一步优化。如果d是n的约数,那么n/d也是n的约数。由n=d*n/d可知min(d,n/d),所以只需要检查2~的所有整数就足够了。此时,素数判定的复杂度为O()。代码实现如下:...
分类:
其他好文 时间:
2014-07-08 16:00:24
阅读次数:
309
Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25134 Accepted Submission...
分类:
其他好文 时间:
2014-07-06 13:15:55
阅读次数:
231
UVA 1434 - YAPTCHA
题目链接
题意:求出题目中那个公式的答案
思路:
当3?k+7非素数的时候,那么(3?k+6)!(因为必然能找到两个因子相乘)
所以原式为0
当3?k+7为素数的时候,根据威尔逊定理,((3?k+6)!+1)%(3?k+7)==0,因此原式可以转化为[x
- (x - 1)] = 1
因此问题转化为只要判断3 * k + ...
分类:
其他好文 时间:
2014-07-06 11:42:44
阅读次数:
162
;; Fermat's Little Theorem:
;; If N is a prime number and A is any positive integer less
;; than N, then A raised to the N-th power is congruent to A modulo N
;; Two numbers are said to be congruent...
分类:
其他好文 时间:
2014-07-06 09:05:22
阅读次数:
158
题目链接:uva 1415 - Gauss Prime
题目大意:给出一个a,b,表示高斯数a+bi(i=?2 ̄ ̄ ̄√,判断该数是否为高斯素数。
解题思路;
a = 0 时,肯定不是高斯素数a != 0时,判断a2+2b2是否为素数即可。
#include
#include
#include
bool is_prime (int n) {
int m = sqr...
分类:
其他好文 时间:
2014-07-06 08:36:51
阅读次数:
317
原题找不到了,应该是usaco之类的题目吧。给一个可以交题的链接:http://www.cqoi.net:2012/problem.php?id=1004思路:将素数一个一个往里乘,保证扫描的顺序是从小到大的就可以了。思路跟usaco training的丑数有点像,算是那道题的简单版吧。我的实现: ...
分类:
其他好文 时间:
2014-07-05 21:12:47
阅读次数:
256
(一)八皇后问题
(1)回溯法
#include
#include
#define MAXN 100
using namespace std;
int tot = 0, n = 8;
int C[MAXN];
void search(int cur) {
if(cur == n) ++tot; //递归边界,只要走到了这里,所有皇后必然不冲突
else for(in...
分类:
其他好文 时间:
2014-07-05 11:09:52
阅读次数:
356
UVA 11014 - Make a Crystal
题目链接
题意:给定一个NxNxN的正方体,求出最多能选几个整数点,使得任意两点PQ不会使PQO共线。
思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O),那么所有点就是f(1),之后要去除掉共线的,就是扣掉f(2), f(3), f(5)..f(n),n为素数.因为这些素数中包...
分类:
其他好文 时间:
2014-07-05 10:50:22
阅读次数:
209
分解质因数算法 1.从N开始递减,找到满足 : n%i ==0 && n是素数 -> result2.存result到数组,递归执行(n/result)var result = new Array();
var factor = function f(n){
if(n == 1){return ;}
var n1 = n;
while(n1>1){
if(isPrime(n1) && n ...
分类:
其他好文 时间:
2014-07-04 07:21:41
阅读次数:
237