【发布时间】:2013-11-01 18:12:01
【问题描述】:
问题是求一个数的除数
前-
for 10
ans=4
因为 1,2,5,10 是除数的数字
即他们是因素
约束数
我已经实现了相同的代码,但得到了 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;
}
谁能帮我优化一下?
我也搜索过,但没有得到任何成功。
所以请帮助大家。
【问题讨论】:
-
编码很好。 :O 有人格式化它
-
请正确缩进您的代码,以便我们阅读。
-
所以在经过大量谷歌搜索后,我现在知道“TLE”是什么——超过了时间限制。
-
不要直接从跑步比赛中提问codechef.com/NOV13/problems/PRETNUM
-
这是 CodeChef 在 11 月进行的长期竞赛中的一个问题。直接在比赛中提问违反了 CodeChef 的行为准则。