求助(悬赏一关)
  • 板块灌水区
  • 楼主__galaxy_1202__
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/3/3 12:24
  • 上次更新2024/3/3 14:58:35
查看原帖
求助(悬赏一关)
1020835
__galaxy_1202__楼主2024/3/3 12:24

题目描述:

小猴非常喜欢研究数学问题,这天他学习了质因数的定义,觉得很有意思,他想每个大于 1 1 的数 x 都会有若干的质因数,如果把 x 的质因数乘起来会有什么规律和特殊的性质么?他把这个乘积定义为"因质数",决定深入研究一下,那第一步就是先把每个数的"因质数"求出来。 现在给出 N 个正整数,求出每个数的因质数是多少。

输入格式:

第一行一个正整数 N,表示数的个数;
第二行 N 个正整数 X 1 ​ ,X 2 ​ ,…X N ​ 。

数据范围:

1≤X≤1e6, 1≤N≤1e6。

我的代码:

#include <iostream>
using namespace std;
unsigned int n, x, a[1500001], cur, num = 1;
bool y[1500001];
int main()
{
   for  (register int i = 2; i <= 1500000; ++i)
   {
   	if (!y[i]) a[++cur] = i;
   	for (register int j = 1; j <= cur && a[j] * i <= 1500000; ++j)
   	{
   		y[i * a[j]] = 1;
   		while (i % a[j] == 0) break;
   	}
   }
   scanf("%d", &n);
   while (n--)
   {
   	num = 1;
   	scanf("%d", &x);
   	for (register int i = 1; a[i] <= x; ++i)  if (x % a[i] == 0) num *= a[i];
   	printf("%d ", num);
   }
   return 0;
}

我的死因:

TLE

求大佬解答!!!

2024/3/3 12:24
加载中...