一个数是不是素数

题目描述

拓拓刚学会素数,现在回到家,他妈妈想考验一下拓拓学的怎么样。于是问了他一个问题:给你一个整数,你能说出他是不是素数吗?现在拓拓算的很慢,想请你帮忙写个程序:计算一个数是不是素数,如果是,则输出"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, 恭喜又解决了一道难题(对于我这种 蒟蒻来讲**)**

相关推荐
吃好睡好便好5 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅5 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
x_yeyue7 小时前
三角形数
笔记·算法·数论·组合数学
Mr. zhihao8 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
念何架构之路8 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星9 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑9 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光9 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩10 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_6294947310 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表