C++ 输入一个数字,判断其是否为素数(只能被1和本身整除的数字),是则输出‘y’,不是则输出‘n’。注意,要求使用函数。
参考如下:
#include <iostream>
using namespace std;
int prime(int x)
{
int i;
int flag = 1;
for (i = 2; i * i <= x; i++)
{
if (x % i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int n;
cout << "请输入一个数字: ";
cin >> n;
if (prime(n))
cout << "y" << endl;
else
cout << "n" << endl;
return 0;
}
给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。
注意:如果开始年份y是闰年,那么认为开始年份后的第一个闰年就是y。
分析输入的year是否为闰年,并分为两类分别计算。
如果给定的年份是闰年,看N的值。当N不为1时,需要注意有的年份通过简单的 year+4*(N-1)不能解决问题。因为有时候需要过八年才是闰年。例如1896年是闰年,但是1896+4即1900年并不是闰年。
现在只能想到通过创建另一个变量来监控进行了多少个闰年。
千万注意
会有八年一次的闰年
#include<iostream>
using namespace std;
//判断是否为闰年
int leap(int year)
{
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
{
return 1;
}
else
return 0;
}
int main()
{
int year;
cin >> year;
int n;
cin >> n;
if (leap(year)) {
if(n==1)
cout << year;
else
{
int sum = 0;
for (int j = 1;; j++)
{
if(leap(year+4*j))
{
sum++;
}
if (sum == n-1)
{
cout << year + 4*j;
break;
}
}
}
}
else
{
year = year + 4 * (n + 1);
//在四年的范围内寻找闰年
for(int i=1;i<4;i++)
{
if(leap(year-i))
{
cout << year - i;
}
}
}
}
解答:
#include<iostream>
using namespace std;
char isPrime(int n) {
for(int i=2;i<=sqrt(n);i++) {
if(n%i==0) return 'n';
}
return 'y';
}
int main() {
int n;
cout << "请输入一个数字:" << endl;
cin >> n;
char res = isPrime(n);
if(res=='y') cout << n << " 是素数" << endl;
else cout << n << " 不是素数" << endl;
return 0;
}
解析:
本题要求判断一个数字是否是素数,可以采用简单的试除法,即从2到这个数字的平方根对它进行判断。若能被整除,则不是素数。若结束循环后没有整除,则是素数。
代码中定义了一个名为isPrime的函数,该函数以一个int类型的参数n为输入,返回一个char类型的结果,即‘y’或‘n’。在函数中采用了for循环和if判断语句进行试除操作,并根据结果返回‘y’或‘n’。
主函数中获取用户输入的数字n,调用isPrime函数得到结果res,并根据res输出结果。