Voilà je débute en C# et j'ai le message d'erreur suivant :
Une référence d'objet est requise pour la propriété, la méthode ou le champs static 'Program.Solve()'
j'aimerais trouver une solution(, sans pour autant tout mettre static si possible)
Mon code :
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 static void Main(string[] args) { Solve(); } public void Solve() { long factor = FindGreatestPrimeFactor(1, 600851475143); Console.WriteLine(factor); Console.Read(); } public long FindGreatestPrimeFactor(long factorGreaterThan, long number) { long upperBound = (long)Math.Ceiling(Math.Sqrt(number)); // find next factor of number long nextFactor = Range(factorGreaterThan + 1, upperBound) .SkipWhile(x => number % x > 0).FirstOrDefault(); // if no other factor was found, then the number must be prime if (nextFactor == 0) { return number; } else { // find the multiplicity of the factor long multiplicity = Enumerable.Range(1, Int32.MaxValue) .TakeWhile(x => number % (long)Math.Pow(nextFactor, x) == 0) .Last(); long quotient = number / (long)Math.Pow(nextFactor, multiplicity); if (quotient == 1) { return nextFactor; } else { return FindGreatestPrimeFactor(nextFactor, quotient); } } } private IEnumerable<long> Range(long first, long last) { for (long i = first; i <= last; i++) { yield return i; } }
Partager