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; } }
如何仅显示最大的数字?我试过使用Math.Max(),但我想这不是我应该写的。我想你可以在for循环之外创建一个名为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
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;
}
}