Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#找出不存在的最大数';t除以2、3、5和7,但小于1000 public void list最大的数字不可分割为Y2357() { 对于(int i=1;i0;i--) if(divisibleNumbers.All(x=>i%x!=0)) 返回i; 返回-1; } }_C# - Fatal编程技术网

C#找出不存在的最大数';t除以2、3、5和7,但小于1000 public void list最大的数字不可分割为Y2357() { 对于(int i=1;i0;i--) if(divisibleNumbers.All(x=>i%x!=0)) 返回i; 返回-1; } }

C#找出不存在的最大数';t除以2、3、5和7,但小于1000 public void list最大的数字不可分割为Y2357() { 对于(int i=1;i0;i--) if(divisibleNumbers.All(x=>i%x!=0)) 返回i; 返回-1; } },c#,C#,如何仅显示最大的数字?我试过使用Math.Max(),但我想这不是我应该写的。我想你可以在for循环之外创建一个名为biggestNumber的变量,在for循环中重新写入该变量,直到达到1000,最后返回biggestNumber(并使用该值执行一些操作)。不确定这是不是最好的方法,但这是一种方法。(注意,我已经修复了你的!(I%2==0)和&!(I%2==0),应该是!(I%2==0)和&!(I%3==0)) 慢路 保存一个currentMaximum,并在每次找到此类号码时更新它: p

如何仅显示最大的数字?我试过使用Math.Max(),但我想这不是我应该写的。

我想你可以在for循环之外创建一个名为
biggestNumber
的变量,在for循环中重新写入该变量,直到达到1000,最后返回
biggestNumber
(并使用该值执行一些操作)。不确定这是不是最好的方法,但这是一种方法。

(注意,我已经修复了你的
!(I%2==0)和&!(I%2==0)
,应该是
!(I%2==0)和&!(I%3==0)

慢路 保存一个
currentMaximum
,并在每次找到此类号码时更新它:

  public void ListTheBiggestNumberNotDividedBy2357()
    {
        for (int i = 1; i < 1001; i++)
        {
            if (!(i % 2 == 0) && !(i % 2 == 0) && !(i % 5 == 0) && !(i % 7 == 0))
            {
                Console.WriteLine(i);
            }
        }
    }
您可以尝试使用简单的Linq来查询
(1000..0]
范围内的数字:

public void ListTheBiggestNumberNotDividedBy2357()
{
    for (int i = 1000; i > 0; i--)
    {
        if (!(i % 2 == 0) && !(i % 3 == 0) && !(i % 5 == 0) && !(i % 7 == 0))
        {
            Console.WriteLine(i);
            break;
        }
    }
}
结果:

  using System.Linq;

  ...

  // let's extact divisors: it's easy to make a mistake like in the code in the question:
  // !(i % 2 == 0) instead of !(i % 3 == 0)
  int[] divisors = new int[] { 2, 3, 5, 7 };

  int result = Enumerable
    .Range(0, 999) // 999 - smaller than 1000
    .Reverse()
    .First(item => divisors.All(d => item % d != 0));

  Console.WriteLine(result);

这可能是一个很好的方法:

  997 
类程序
{
静态void Main(字符串[]参数)
{
var result=FindBiggestNumberNotDivisible(新的int[]{2,3,5,7},1000);
控制台写入线(结果);
}
公共静态int FindBiggestNumberNotDivisible(IEnumerable divisibleNumbers,int maxNumber)
{
对于(int i=maxNumber-1;i>0;i--)
if(divisibleNumbers.All(x=>i%x!=0))
返回i;
返回-1;
}
}
输出:

997


我会从1000开始,然后下降。然后你只需要打印第一个,然后中断。输入错误?第二个条件应该是
!(I%3==0)
我还要确保你的测试使用了正确的整数集。你的测试2次,忽略了3。从999开始,向下递增2到11。你已经知道偶数被排除在外,所以即使尝试这些数字也没有意义。当满足3,5,7的条件时,中断测试。
  997 
class Program
{
    static void Main(string[] args)
    {
        var result = FindBiggestNumberNotDivisible(new int[] { 2, 3, 5, 7 }, 1000);

        Console.WriteLine(result);
    }

    public static int FindBiggestNumberNotDivisible(IEnumerable<int> divisibleNumbers, int maxNumber)
    {
        for (int i = maxNumber - 1; i > 0; i--)
            if (divisibleNumbers.All(x => i % x != 0))
                return i;

        return -1;
    }
}