IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur : référence d'objet requise pour la propriété


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Par défaut Erreur : référence d'objet requise pour la propriété
    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;
        }
    }
    }

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Pourquoi mets tu des méthodes dans la class Program ?

  3. #3
    Membre éprouvé Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Pourquoi mets tu des méthodes dans la class Program ?
    Citation Envoyé par diabli73 Voir le message
    Voilà je débute en C# ...
    L'idéal serait que tu créés une autre classe "MaClass" avec ses méthodes et que tu utilise les méthodes de cette classe à partir de ton Main().

    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
    53
    54
    55
    56
     
    public class MaClass
    {
     
    public MaClass()
    {
    }
     
    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;
        }
    }   
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    static void Main(string[] args)
            {
                MaClass MC = new MaClass();
                MC.Solve();
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] problème référence d'objet est requise pour NavigationService
    Par Veidt dans le forum Windows Phone
    Réponses: 2
    Dernier message: 11/08/2012, 01h13
  2. [Débutant] Erreur référence d'objet requise
    Par paul86 dans le forum C#
    Réponses: 1
    Dernier message: 17/03/2012, 21h10
  3. Réponses: 1
    Dernier message: 17/03/2011, 02h54
  4. Réponses: 4
    Dernier message: 23/06/2008, 18h10
  5. Réponses: 7
    Dernier message: 02/08/2006, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo