Ce code, je suppose, me donnerait le facteur premier le plus important pour l'entrée du nombre composite. Cependant, cela fonctionne pour certaines entrées et pas pour d'autres.Le facteur de forme dans le code C++ ne fonctionne pas pour toutes les entrées
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int num=1, sum, count=0, test;
cin>>test;
while(num<=(sqrt(test)))
{
if(test%num==0)
{
for (int prime=2; num>prime; prime++)
{
if(num%prime==0)
count ++;
}
if (count == 0)
sum=num;
}
num++;
}
cout<<sum;
}
Exemples où il ne fonctionne pas:
entrée: 6, prévu: 3, a obtenu: 2;
entrée: 540, attendue: 5, prise: 3;
entrée: 600, attendue: 5, prise: 3; Est-ce que quelqu'un peut me dire quoi changer?
Veuillez donner un exemple où cela ne fonctionne pas. c'est-à-dire l'entrée et ce qui est attendu –
Déplacez également la condition 'sqrt' hors de la condition while pour la vitesse –
Vous limitez votre recherche à des nombres ne dépassant pas' sqrt (test) '. Cela signifie que, au moins pour les nombres qui sont un produit de deux nombres premiers, vous pouvez seulement trouver le plus petit des deux. Dans ce cas, le plus petit premier est nécessairement ' = sqrt (test)' –