输入一个数字,判断其是否为素数(只能被1和本身整除的数字),是则输出‘y’,不是则输出‘n’。注意,要求使用函数。

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;
}
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/714622
  • 这篇博客你也可以参考下:(C++)编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
  • 除此之外, 这篇博客: 给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。 C++中的 给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 给你一个正整数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;
    			}
    		}
    	}
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    解答:

    #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输出结果。