求助
  • 板块灌水区
  • 楼主eggyparty
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/22 13:48
  • 上次更新2023/11/22 17:12:07
查看原帖
求助
1201634
eggyparty楼主2023/11/22 13:48

题目

我的代码:

#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;
}

输出正常。

两个代码明明差不多,为什么输出差别这么大(都是按照输入样例输入的)

2023/11/22 13:48
加载中...