一个数是不是素数

题目描述

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

相关推荐
GreenTea1 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_20021 小时前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
土司大王2 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹3 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王3 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本4 小时前
数据结构第三课(时间复杂度)
数据结构·学习
罗西的思考4 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
Logic1015 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和