问题是找到一个数的除数
前任-
for 10
答案=4
因为 1,2,5,10 是除数
即它们是因素
约束是 num<=10^6
我已经实现了相同的代码,但得到了 TLE!
这是我的代码
int isprime[MAX];
void seive()
{
int i,
j;
isprime[0] = isprime[1] = 1;
for (i = 4; i < MAX; i += 2)
isprime[i] = 1;
for (i = 3; i * i < MAX; i += 2) {
if (!isprime[i]) {
for (j = i * i; j < MAX; j += 2 * i)
isprime[j] = 1;
}
}
}
int main()
{
seive();
int t;
long long num;
scanf("%d", & t);
while (t--) {
scanf("%lld", & num);
cnt = 0;
for (j = 1; j * j <= num; j++) {
if (num % j == 0) {
cnt++;
if (num / j != j)
cnt++;
}
printf("%lld\n", cnt);
}
return 0;
}
有人可以帮我优化它吗?
我也搜索过它,但没有得到任何成功。
所以请帮助大家。