问个难题# JobHunting - 待字闺中M*a2014-09-29 07:091 楼就是给个数组A都是正整数,然后一个范围[1,N],返回[1,N]当中不能被任何A的元素整除的数字的个数。就这么简单,怎么做。什么一个一个除着看的做法就不用说了。
M*a2014-09-29 07:093 楼不能被任何A的元素整除还要公式。。。估计就不是这么做了。【在 g****o 的大作中提到】: 能被任何A的元素整除?: 你是说互质吗?: 有公式: http://en.wikipedia.org/wiki/Euler's_totient_function
l*b2014-09-29 07:095 楼应该是假设A unsorted吧 有个不太好的思路 需要大概O(n)时间 和O(n)空间 但是感觉空间还可以优化 我先说下思路:把1-N所有N个数放进一个set 然后遍历A数组 假设A = {6,7, 9,2} (是不是A里要是有1就可以直接返回0了) A[0] = 6, 所有就把6从set里删除(在6 < n的前提下)。。然后 遍历所有6的倍数 知道这个倍数大于N了 就结束 继续下一个。。好吧。。时间复杂度好像不止O(n - -|||)
l*82014-09-29 07:096 楼1. 求A的最小公倍数x2. for i = 1.. Nif GCD(i, x) == 1print i【在 M*******a 的大作中提到】: 就是给个数组A都是正整数,然后一个范围[1,N],返回[1,N]当中不能被任何A的元素: 整除的数字的个数。: 就这么简单,怎么做。: 什么一个一个除着看的做法就不用说了。