Everybody knows any number can be combined by the prime number.
Now, your task is telling me what position of the largest prime factor.
#define Max 1000000
bool prime[Max>>1];
void IsPrime()
{
memset(prime,true,sizeof(prime));
int n=Max>>1,m=(int)(sqrt(Max*1.0)/2.0);
for(int i=0;i<=m;i++)
if(prime[i])
for(int j=2*i*i+6*i+3;j<=n;j+=2*i+3)
isprime[j]=false;
} //代码来自于某博主
The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.
Specially, LPF(1) = 0.
Input
1 2 3 4 5
0 1 2 1 3
题意就特别水了,给你一个数让你找出最大的素数因子所在素数表的位置。
最重要的应该是素数筛吧:
代码:
#include #include #include #define maxn 1000010 using namespace std; int A[1000010],C[1000010]; /*void init() { A[2]=1; for(int i=2;i<1000010;i+=2) A[i]=1; for(int i=3;i<1000010;i+=2) { if(A[i]) continue; A[i]++; for(int j=2*i;i<1000010;j+=i) A[j]=A[i]; } }*/ int main(){ int n,cnt,i,j; memset(A,0,sizeof A); A[2]=1; for(i=4;i
代码是不是超级短,比打表优美多了有没有。。。