14 solutions
-
-3
解题报告
撰写人: 朱梓霖
题意分析
问题描述:给定一个大于等于 2 的整数 n,判断它是否为质数。 质数的定义是:在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数。 输入格式: 一个整数 n。 输出格式: 如果 n 是质数,输出 "Yes";否则输出 "No"。
难度等级
★★☆☆☆
解题思路
我们首先假设输入的数字 n 是一个质数,并用一个布尔变量 isPrime 来表示这个状态,初始值为 true。我们使用一个 for 循环来检查 n 是否有除了 1 和它本身之外的因数。循环变量 i 从 2 开始。循环的终止条件是 i * i <= n。这是一个优化点,因为一个数 n 的因数如果存在,那么其中一个必然小于或等于其平方根。检查到其平方根 就足够了,可以减少循环次数。在循环中,对于每一个 i,我们检查 n 是否能被 i 整除(即 n % i == 0)。如果找到了一个可以整除 n 的 i,这说明 n 不是质数。 循环结束后,根据 isPrime 的值进行判断。 如果 isPrime 仍然是 true,说明在整个循环过程中没有找到任何能整除 n 的数,因此 n 是质数,输出 "Yes",否则,输出 "No"。
解题反思
代码缩进的重要性:良好的代码缩进可以极大地提高代码的可读性。 逻辑严谨性:在编写条件判断和循环时,一定要仔细梳理每一步的逻辑。 测试是关键:写完代码后,不要只测试一两个简单的案例。
参考程序
#include<bits/stdc++.h> using namespace std; int main(){ int n; bool isPrime=true; cin>>n; for(int i=2;i*i<=n;i++){ if(n%i==0)isPrime=false; break; } if(isPrime){ cout<<"Yes";} else{cout<<"No";} return 0;}
Information
- ID
- 602
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 1
- Tags
- (None)
- # Submissions
- 51
- Accepted
- 39
- Uploaded By