
c语言为什么判断素数用sqrt ?拜托各位大神
scanf("%d",&n);k=sqrt(n)for(i=2;i<=k;i++)if(k%i==0)bresk;如上:为什么不直接判断n%i,而是2-sqrt(n)这个...
scanf("%d",&n); k=sqrt(n) for(i=2;i<=k;i++) if(k%i==0)bresk; 如上:为什么不直接判断n%i,而是2-sqrt(n)这个范围?(主要是为什么可以平方根)
展开
2个回答
展开全部
你好,我们假设一个数a; 那么a=(a^1/2)*(a^1/2); 如果a不是素数; 那么a有一个因子b a=b*c; 那么a的因子中(b或c)必定有一个是小于等于a^1/2的; 所以判断的时候不用判断到1-a,只需要1-a^1/2; 明白了吧?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询