Math 找到所有只能被3、5和7整除的数字

Math 找到所有只能被3、5和7整除的数字,math,division,Math,Division,在一次采访中,我被要求找出所有的数字只能被3、5和7整除。我想我们可以这样做 if (num%3==0 || num%5==0 || num%7==0) return true else return false. 但在这种情况下,如果我们有6,它将通过测试,但它也可以被2整除,所以这不起作用。你能定个目标吗? 我正在使用java。Find mean检查某个数字是否只能被这个数字整除,我不会给你一个Java算法,因为它应该很容易实现 你可以: 1. check if (n%3

在一次采访中,我被要求找出所有的数字只能被3、5和7整除。我想我们可以这样做

if (num%3==0 || num%5==0 || num%7==0) 
  return true 
else 
  return false. 
但在这种情况下,如果我们有6,它将通过测试,但它也可以被2整除,所以这不起作用。你能定个目标吗?
我正在使用java。Find mean检查某个数字是否只能被这个数字整除,我不会给你一个Java算法,因为它应该很容易实现

你可以:

1. check if (n%3 == 0)
2. if it is, set n /= 3 and repeat step 1.
3. do the same for the number 5 and 7
4. now if n != 1, return false, else return true
在Java算法中:

// n is some random natural number
if (n == 1 || n == 0)
    return false

while (!n%3) 
{
    n /= 3;
}
while (!n%5)
{
    n /= 5;
}
while (!n%7)
{
    n /= 7;
}
if (n == 1)
{
    return true;
}
else
{
    return false;
}

这并不是最好的语法,我只是给出了上述算法的一个简单实现。

我将从原始数字中删除所有3、5和7的因子,然后看看剩下的是什么

while(num % 3 == 0)
{
    num = num / 3;
}
while(num % 5 == 0)
{
    num = num / 5;
}
while(num % 7 == 0)
{
    num = num / 7;
}

return (num == 1);

我们首先注意到1是集合的一个成员。虽然它不能被3、5或7整除,但它也不能被3、5或7以外的任何数字整除,所以我们可以说1在集合中。这符合集合{x=3i·5j·7k | i,j,k的数学定义≥ 0}

一种方法是从1开始计数,每一步加2,然后检查数字是否只能被3、5和7整除。这很慢,因为它做了很多工作,但这些工作会立即被丢弃,因为只有3、5和7可以整除的数字比奇数要少得多

更好的方法是通过归纳直接生成所需的数字。数字1在集合中,对于集合中的任何x,3X、5X和7X也是如此。因此,生成只能被3、5和7整除的所有数字的算法顺序如下:

1. Initialize a priority queue with the number 1.
2. Pop the smallest number in the priority queue, call it x.
3. Add 3x, 5x and 7x to the priority queue.
4. Output x as the next integer in the set.
5. If you want more output, go to Step 2.
6. Halt.

我实现了两种算法;你可以在家里看到他们。暴力法只需10秒多一点,就可以找到3,5,7组的203名成员,少于100万;优先级队列在百分之一秒的时间内完成相同的计算,速度要快一千倍。此处使用的优先级队列实现在中进行了说明。您还可以在中看到3,5,7的数字集。

这类问题要求您在开始之前稍微考虑一下所涉及的数学。您使用的是什么语言?到目前为止,您尝试了什么代码?你想让你的数字列表被3、5和7整除到什么程度?有无限多的可能性,“发现”是什么意思?检测还是列表?我正在使用java。Find mean检查某个数是否只能被这个数整除的问题是关于素数的吗?或者只是一个普通的数字?这是一个很好的方法,但如何避免重复?数字插入队列的方式如下:1 | 3 5 7 | 9 15 21 | 21 35 49|