注册 登录
编程论坛 C语言论坛

程序判断素数,请问为什么会有用例运行超时?

Anado 发布于 2019-12-18 13:14, 2240 次点击
程序判断素数,请问为什么会有用例用时超时?
#include<stdio.h>
int prime(int n)
{
    int i,ret=1;
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        {
            ret=0;
            break;
        }
    }
    return ret;
}
int main()
{
    int i,num,isPrime;
    scanf("%d",&num);
    isPrime=prime(num);
    if(isPrime==1)  printf("%s","yes");
    else  printf("%s","no");
    return 0;
}


[此贴子已经被作者于2019-12-18 13:16编辑过]

4 回复
#2
c鳌白2019-12-18 19:39
测试了你的代码 好像没问题 能不能说具体一些
#3
nxiner2019-12-19 15:38
应该是类似acm一样的系统运行测试的吧,
他有时间限制的,
代码运算太复杂超出了期望时间。
问题在 if(n%i==0)
         {
             ret=0;
             break;
         }
建议换一种算法,
求余计算和除法运算很“耗时间”。
#4
bcbbcclbbc2019-12-20 10:53
嗯嗯,同意3楼,这个方法一个数接一个数计算实在是太耗时间了。要想通过,需要筛选一部分数比如偶数,可以找一找什么定理的。。。搜一搜有挺多介绍的
https://bbs.bccn.net/thread-330825-1-1.html#pid1904827
可以看看这个第一条
#5
WilsonLA2020-01-20 23:34
除了2 3 5本身外,其余的素数都不可以被它们三个整除,还有1不是素数,因为不符合基本算数定理
1