摘要: 好题啊,赞一个~先是没思路,问了别人,才知道只要令x = n + a, y = n + b因为x 和y 一定大于n(这个很好想),就能将问题转化为求n*n = a * b以a和b为变量的方程的解的个数,而这个方程解的个数正好可以用n*n这个数的所有因子个数(设为num)来表示,即(num + 1) / 2。想到这还卡了一会儿,因为这个也不好求,n*n就成了long long 范围了。花了好久才想到,只要能够求出n的各个素因子的个数,n*n的素因子个数只是翻倍而已。从而,就可以用打素数表的方法(这里也有一个小技巧,只要打到根号n的素数表即可,因为n*n的素因子中,如果有大于根号n的,那么一定只有 阅读全文
posted @ 2011-10-16 23:03 moonbay 阅读(154) 评论(0) 推荐(0) 编辑