过了,但是不理解
  • 板块CF230B T-primes
  • 楼主ny_Dacong
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/10 15:33
  • 上次更新2024/7/10 16:26:19
查看原帖
过了,但是不理解
928972
ny_Dacong楼主2024/7/10 15:33

以下两份代码,只有第 8 行的判断不同,第一份 A 了,第二份 TLE。为什么?

#include<bits/stdc++.h>
using namespace std;
long long q,n,sqn;
bool isprime(long long x){
	if(x == 2){
		return 1;
	}
	for(long long i = 2; i*i <= x; i++){
		if(x%i == 0){
			return 0;
		}
	}
	return 1;
}
int main(){
	cin>>q;
	while(q--){
		cin>>n;
		sqn = (long long)sqrt(n);
		if(sqn*sqn != n || n == 1){
			printf("NO\n");
			continue;
		}
		if(isprime(sqn)){
			printf("YES\n");
		}else{
			printf("NO\n");
		}
	}
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long q,n,sqn;
bool isprime(long long x){
	if(x == 2){
		return 1;
	}
	for(long long i = 2; i <= x/i; i++){
		if(x%i == 0){
			return 0;
		}
	}
	return 1;
}
int main(){
	cin>>q;
	while(q--){
		cin>>n;
		sqn = (long long)sqrt(n);
		if(sqn*sqn != n || n == 1){
			printf("NO\n");
			continue;
		}
		if(isprime(sqn)){
			printf("YES\n");
		}else{
			printf("NO\n");
		}
	}
	return 0;
}
2024/7/10 15:33
加载中...