一个数是不是素数

题目描述

拓拓刚学会素数,现在回到家,他妈妈想考验一下拓拓学的怎么样。于是问了他一个问题:给你一个整数,你能说出他是不是素数吗?现在拓拓算的很慢,想请你帮忙写个程序:计算一个数是不是素数,如果是,则输出"is prime";否则输出"is not prime"。

输入格式

第一行一个整数 n。 ( 0≤n≤10000,0000,0000,00000 )

输出格式

输出这个数是不是素数。

样例

输入数据 #1

复制代码
1000

输出数据 #1

复制代码
1000 is not prime

输入数据 #2

复制代码
97

输出数据 #2

复制代码
97 is prime

数据范围

  • 对于 100% 的测试数据满足: 0≤n≤10000,0000,0000,00000 。

解析

这题让判断素数(也就是质数)

NOTE

0≤n≤10000,0000,0000,00000 数据有点大哦

所以第一版

cpp 复制代码
//别着急copy
#include<bits/stdc++.h>
using namespace std;
int sushu(int x){
	if(x<2){
		return 0;
	}
	int i;
	for(i=2;i<=sqrt(x);i++){
		if(x%i==0){
			return 0;
		}
	}
	return 1;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	if(sushu(n)){
		cout<<n<<' '<<"is prime";
	}
	else{
		cout<<n<<' '<<"is not prime";
	}
}

But

这很明显会WA,因为n的范围太大了

int很明显会

So,第二版

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	long long n;
	cin >> n;
	if (n < 2) {
		cout << n << " is not prime";
		return 0;
	}
	if (n == 2) {
		cout << n << " is prime";
		return 0;
	}
	if (n % 2 == 0) {
		cout << n << " is not prime";
		return 0;
	}
	for (long long i = 3; i * i <= n; i += 2) {
		if (n % i == 0) {
			cout << n << " is not prime";
			return 0;
		}
	}
	cout << n << " is prime";
	return 0;
}

But

这种写法太啰嗦了

So

还有一种写法

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
long long sushu(long long x){
	if(x<2){
		return 0;
	}
	long long i;
	for(i=2;i<=sqrt(x);i++){
		if(x%i==0){
			return 0;
		}
	}
	return 1;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	long long n;
	cin>>n;
	if(sushu(n)){
		cout<<n<<' '<<"is prime";
	}
	else{
		cout<<n<<' '<<"is not prime";
	}
}

直接用函数就可以了

OK, 恭喜又解决了一道难题(对于我这种 蒟蒻来讲**)**

相关推荐
Hui_AI7203 小时前
基于RAG的农产品GEO溯源智能问答系统实现
开发语言·网络·人工智能·python·算法·创业创新
lwf0061643 小时前
FFM (Field-aware Factorization Machine) 学习日记
算法·机器学习
南宫萧幕3 小时前
HEV能量管理控制算法实战:从MPC/RL理论基础到Simulink闭环建模
算法·matlab·汽车·控制·pid
IT猿手3 小时前
SCI一区:章鱼优化算法(Octopus Optimization Algorithm, OOA)求解23个测试函数,出图丰富,提供完整MATLAB代码
开发语言·算法·matlab
superior tigre3 小时前
739 每日温度
算法·leetcode·职场和发展
忡黑梨3 小时前
eNSP_从直连到BGP全网互通
c语言·网络·数据结构·python·算法·网络安全
Run_Teenage3 小时前
算法:离散化模板
算法
乐迪信息3 小时前
乐迪信息:实时预警,秒级响应:船舶AI异常行为检测算法
大数据·人工智能·算法·安全·目标跟踪
6Hzlia3 小时前
【Hot 100 刷题计划】 LeetCode 15. 三数之和 | C++ 排序+双指针
c++·算法·leetcode