一个数是不是素数

题目描述

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

相关推荐
小宋加油啊14 小时前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d
lqqjuly14 小时前
前沿算法深度解析(一)
算法
小欣加油14 小时前
leetcode1926 迷宫中离入口最近的出口
数据结构·c++·算法·leetcode·职场和发展
happymaker062617 小时前
LeetCodeHot100——42.接雨水
算法
阿正的梦工坊17 小时前
【Rust】07-错误处理:Option、Result 与 ? 运算符
开发语言·算法·rust
烬羽17 小时前
从零理解树与二叉树:用 JS 带你手撕遍历和递归
javascript·数据结构
YHL18 小时前
🚀从零理解树与二叉树 —— 概念、实现与遍历
前端·javascript·数据结构
JieE21218 小时前
JS 到底有多少种数据类型?从ECMA规范到内存本质,一文彻底搞懂
javascript·数据结构·面试
努力努力再努力wz18 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表