【发布时间】:2020-08-16 07:55:21
【问题描述】:
我试图找到给定数字的最大因子,它很简单,但不知道为什么我的代码没有给出正确的输出:
#include<iostream>
#include<math.h>
#include <bits/stdc++.h>
using namespace std;
int lfactor(int a)
{
int *p;
int s=0;
p=new int[a];
int lf;
for(int i=2;i<a;i++)
{
if(a%2==0)
{
lf=a/2;
cout<<lf;
return 0;
}
else
{
if(a%i==0)
{
p[s]=i;
s++;
}
}
}
cout<<*max_element(p,p+a);
}
int main()
{
int a;
cout<<"Enter Number to calculate largest factor";
cin>>a;
lfactor(a);
}
这段代码给了我一些随机输出输入,它正在尝试 15689
【问题讨论】:
-
任何给定数字的最大因素是数字本身,所以请重新表述您的问题!
-
请解释我到底哪里错了
-
因数成对出现,所以一旦找到最小的因数(称为 f1),将数字除以 f1,结果将是最大的因数。此外,您可能只想在循环外检查一次是否可被 2 整除。当你得到数字的平方根时,你也可以停止寻找因子。如果你在没有找到因子的情况下达到那个点,那么这个数字就是素数。回到成对出现的因子,因此每个大于平方根的因子都必须与一个小于平方根的因子配对。