题目梗概:求1000000以内任意数的最大质因数是第几个素数,其中 定义 1为第0个,2为第1个,以此类推. #include<string.h> #include<stdio.h> #include<math.h> ],b[],c[];//b[i]表示i是第几个素数,c[k]表示k的最大素数是c[k],a[i]表示是不是素数 int main() { int n,i,num,j; memset(a,,sizeof(a)); a[]=; b[]=; num=; ;i&l…
题意:给你一个数,让你求它的最大因子在素数表的位置. 析:看起来挺简单的题,可是我却WA了一晚上,后来终于明白了,这个第一层循环不是到平方根, 这个题和判断素数不一样,只要明白了这一点,就很简单了. 代码如下: #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <cstring>…
Problem Description Everybody knows any number can be combined by the prime number. Now, your task is telling me what position of the largest prime factor. The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc. Specially, LPF(1) = 0. Inpu…
#include <iostream> #include <vector> #include <cmath> using namespace std; const int MAX=1000001; bool isPrime[MAX];//isPrime[i]=true表示是素数,false表示不是 int indexes[MAX]; //存放素数因子的序号 void eraosthenes() { fill(isPrime,isPrime+MAX,true);//如果0…
题目大意:求出比给出数小的互质的质数个数. 题解:直接用筛法求素数,稍微改编一下,将原先的布尔数组变为数组用来记录信息就可以了. 注意点:大的数组定义要放在程序的开头,不要放在main里面,不然会栈溢出. #include <cstdio> #define max 1000000 }; int main() { int n; ; ; i<max; ++i) { if(prim[i]) continue; for(int j=i; j<max; j+=i) prim[j]=cnt;…
Largest prime factor Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13481    Accepted Submission(s): 4765 Problem Description Everybody knows any number can be combined by the prime number.Now,…
Problem Description Everybody knows any number can be combined by the prime number.Now, your task is telling me what position of the largest prime factor.The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.Specially, LPF(1) = 0.   Input…
用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为int根号后大小不超过60000. 即因子的大小不会超过60000,除非本身是质数. int 4 -2147438648-+2147438647long int 4 -2147438648-+2141438647 #include <iostream> #include <cstdio>…
题意:给出一个区间[L,U],找出区间里相邻的距离最近的两个素数和距离最远的两个素数. 用素数筛选法.所有小于U的数,如果是合数,必定是某个因子(2到sqrt(U)间的素数)的倍数.由于sqrt(U)最大也只有2^16,所以我们可以用素数筛选法,先预处理出2~2^16之间的素数,然后再用这些素数筛选出L~U之间的素数.接着就好办了. 有几个要注意的是:1:L为1的情况,可以通过令L=2或者标记isp[0]=false.2:建议用long long,否则很容易在过程中超int范围,导致数组越界RE…
快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数.   输入 给出一个正整数数N(N<=2000000)但N为0时结束程序.测试数据不超过100组 输出 将2~N范围内所有的素数输出.两个数之间用空格隔开 样例输入 5 10 11 0 样例输出 2 3 5 2 3 5 7 2 3 5 7 11 /* Name: NYOJ--187--快速查找素数 Copyright: ©201…