全re了,大佬帮忙看看
查看原帖
全re了,大佬帮忙看看
700100
river_dd楼主2022/3/21 22:31
#include<stdio.h>
#include<math.h>
#include<stdbool.h>

#define MAXN 200000002

bool vis[MAXN];
int prime[MAXN];
int cnt=0;

void Euler_prime(double n)
{
	for(int i=2;i<=n;i++)
	{
		if(!vis[i])
		{
			prime[cnt++]=i;vis[i]=true;
		}
		for(int j=0;j<=cnt;j++)
		{
			if(i*prime[j]>n)
			{
				break;
			}
			vis[i*prime[j]]=true;
			if(i%prime[j]==0)
			{
				break;
			}
		}
	}
}

int main()
{
	int n,max=2;
	scanf("%d",&n);
	Euler_prime(sqrt(n));
	for(int i=0;i<n;i++)
	{
		if(n%prime[i]==0&&max<i)
		{
			max=i;
		}
	}
	printf("%d",max);
	return 0;
}
2022/3/21 22:31
加载中...