求最大质因数

法一(常规方法)

#include
#include
using namespace std;

bool isPrimeNumber(int n)
{
 if (n < 2)
  return false;
 for (int i = 2; i < sqrt((double)n); i++)
 {
  if (n%i == 0)
   return false;
 }
 return true;
}

int main()
{
 int n,max=0;
 cin >> n;
 for (int i = 2; i < n; i++)
 {
  if (n%i == 0 && isPrimeNumber(i)&&i>max)
   max = i;
 }
 cout << max;
 return 0;
}

法二(高效方法)

#include
using namespace std;

int getMaxPrime(int n) 
{
 int i = 2;
 int res = 1;
 while (n > 2) 
 {
  if (n%i == 0) 
  {
   n /= i;
   res = i;
  }
  else
   i++;
 }
 return res;
}

int main()
{
 int n;
 cin >> n;
 cout << getMaxPrime(n);
 return 0;
}

你可能感兴趣的:(数据结构与算法)