我的代码:
#include<bits/stdc++.h>
using namespace std;
bool isprime(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return 0;
}
return 1;
}
bool maxprifac(int n)
{
for(int i=n;i>=2;i--)
{
if(isprime(i) && n%i==0)
return i;
}
}
int main()
{
int a,b;
bool first=1;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(first)
first=0;
else
cout<<',';
cout<<maxprifac(i);
}
return 0;
}
输出: 1,1,1,1,1,1
同学的代码:
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
for(int i = 2; i <= sqrt(n); ++i)
if(n%i == 0)
return false;
return true;
}
int maxPrimeFactor(int n)
{
for(int i = n; i >= 2; --i)
if(n%i == 0 && isPrime(i))
return i;
}
int main()
{
int m, n;
cin >> m >> n;
bool isFirst = true;
for(int i = m; i <= n; ++i)
{
if(isFirst)
isFirst = false;
else
cout<<',';
cout << maxPrimeFactor(i);
}
return 0;
}
输出正常。
两个代码明明差不多,为什么输出差别这么大(都是按照输入样例输入的)