
数论
zdsfwy
这个作者很懒,什么都没留下…
展开
-
一道因数分解的相关数学题
题目地址http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=222此为数学题。题目要求求出N!的最后一位(即最低位)非零位是多少。分析过程:我们得先明确一点: 乘积中的因子10只有2,5两质因数相乘才能得到。可以先来观察下乘积末尾不为0的情况,因此我们试着把乘积中5的倍数均去掉。① 当 0那么 1~9 N! 中最后一非零位分别为 1,1,2,6,4,4,4,8,4,6 (已经去掉5)因为事先去掉了5,所以当我们把5补上的时候,相当于最后一位数原创 2010-11-08 19:49:00 · 635 阅读 · 0 评论 -
求素数的几种方法
一、根据定义设判断n是否为素数。用2~(sqrt(n)+1)的数来除以要判断的数。二、定义的改进 用2~sqrt(n)+1之内的素数来除以要判断的数。三、筛选法标记为1的不是素数。1、第一种prime1[0] = prime1[1] = 1; for(i = 2; i 2、第二种prime2[0] = prime2[1] = 1;for(i = 2; i if(!prime2[i]){for(j = 2; i*j prime2[i*j]=1;}}}两种方法依据的原理不同。第一种原创 2011-02-01 18:07:00 · 832 阅读 · 0 评论 -
求最大公约数方法的总结
一、欧几里得算法int gcd(int a,int b){return b==0?a:gcd(b,a%b);} 二、Stein算法对于很大的数,用高精度表示,用欧几里得算法的话大数除法比较麻烦。用这个算法会比较简单,只用到除2与加减运算。下面的代码摘自这个网址,罪过罪过^_^http://www.blogjava.net/renyangok/archive/2007/12/15/167956.htmlint gcd(int a,int b){ if(ab int temp = a原创 2011-02-01 19:02:00 · 796 阅读 · 0 评论