这几个问题都可以用一个辅助数组来帮助求解,也有的称为是伴随数组。
1、素数
筛选法求素数:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
void prime(int n)
{
vector isPrime(n+1,true);
int i;
for (i = 2;i*i <=...
分类:
其他好文 时间:
2014-09-09 13:06:48
阅读次数:
328
求素数Time Limit: 100ms Memory limit: 65536K有疑问?点这里^_^题目描述求小于n的所有素数的数量。输入多组输入,输入整数n(n#include int f[1000004];int main(){ int n; int i, j; memset(f, 0, si...
分类:
其他好文 时间:
2014-09-06 09:42:22
阅读次数:
179
求2~2000的所有素数.有足够的内存,要求尽量快 1 #include "stdafx.h" 2 #include 3 #include 4 5 int array[2000] = {2}; 6 static int find = 1; 7 bool adjust(int value) 8 ...
分类:
其他好文 时间:
2014-09-03 16:16:56
阅读次数:
249
大于1的自然数不是素数就是合数,只要能被素数整除就不是素数,据此逐个打印素数,可不调用库函数sqrt。#include<stdio.h>intmain(void){inti,j;intprime[50]={2,3,5,7,11,13,17,19};intk=8;for(i=20;i<201;++i){for(j=0;j<k;++j){if(i%prime[j]==0)break;}if(j==k..
分类:
编程语言 时间:
2014-09-02 18:00:15
阅读次数:
186
当一个数不算大的时候,可以用普通的求素数的方法去求,但是如果一个数过大的话,就像让求1-十亿之间素数的个数,普通方法就不行了,这事就需要用到素数筛选法,他的时间复杂度是O(n),尽管不算很好,但是,也算是目前为止比较快的一种方法了,它是以空间换取时间,现在的计算机,空间有的是,但是时间是非常珍贵的。...
分类:
其他好文 时间:
2014-08-29 15:57:08
阅读次数:
190
利用筛法求素数表
const int Max = 1e6 + 50;
int isPrime[Max]; //素数判断结果表
int tblPrime[Max]; //所求得的素数表
int lenPrimes; //所求得的素数表的长度(个数)
void initTblOfPrime()
{
memset(isPrime, 1, sizeof(isPrime));
isPrime[0] ...
分类:
其他好文 时间:
2014-08-16 17:10:01
阅读次数:
137
1.普通法:-------------------------#include#include #includeusing namespace std;int main(){//freopen("debug\\in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取...
分类:
其他好文 时间:
2014-08-13 14:44:46
阅读次数:
235
Calling Extraterrestrial Intelligence Again
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 10716
Accepted: 4210
Description
A message from humans to ext...
分类:
其他好文 时间:
2014-08-11 18:05:32
阅读次数:
228
就是算出来每一个C(N,M)是由哪些数乘来的就好。。。。
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define LL long long
#define lcm(a,b) (a*b/gcd(a,b))
//O(n)求素数,1-...
分类:
其他好文 时间:
2014-08-09 21:33:49
阅读次数:
295
筛选法求素数:
筛选素数的方法不是直接判断一个数是不是素数,而是将不是素数的数全部去除,剩余的就是素数了。
1.如果区间包含1,首先将1标记为非素数。
2.从下一个最小的素数a开始,将该素数的倍数(2a,3a,……,ka)全部标记为非素数。
3.从a的后面找下一个最小的素数,重复2操作。
4.重复2,3操作,直到所有元素都筛选完为止。
例如:筛选1到25之间的素数
①按部就班地按上面...
分类:
其他好文 时间:
2014-08-08 16:02:36
阅读次数:
335