PTA:判断素数

输入两个正整数m和n(m<=n),输出m和n之间的全部素数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输入示例:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
1 3‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输出示例:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
2 3(后有一空格)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬

输入示例:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
5 10‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
输出示例:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
5 7(后有一空格)
 

​
//本代码仅供参考,了解解题思路,代码并非最佳,请尝试优化 

#include 
int isprime(int n);
int main()
{
    int m,n;
    scanf("%d%d", &m,&n);
    for (int i = m; i <= n; i++)		//用for循环遍历两个整数之间的数 
    {
        if (isprime(i))					//调用函数 
        {
            printf("%d ", i);
        }
    }
    return 0;
}
int isprime(int n)				
{
	int ret = 1;
    if (n == 2)							//处理特殊值 
	{
		ret = 1;
	}
    if (n < 2) 
	{
		ret = 0;
	}
    for (int i = 2; i < n / 2; i++)		 //判断是否为素数 
	{									 
		if (n % i == 0) 				 
		ret = 0;
	}
    return ret;							//单一出口原则 
}

​

在拿到这条题时,要注意,

1不是素数,2是素数。而这些都是已知条件,可以直接用if语句,将其先提出来。

那么在for循环语句中,i 一定不能小于二,而条件语句中的 “i

在定义函数的表达式中,有两种表达方式

一种是 不定义 “ret”变量 ,而是在if条件语句中,直接return 0;或者return 1;但这种方法在一些大型程序中 ,对于新手进行调试 较不方便。但这种方法,可以不用在最后再重复return 进行。

另一种 是先定义一个 变量  a ,充当工具人  然后,如果是 另它 等于 1或者0;最后再return a;在调试时更容易查看错误在哪里。

两种方法更有它的优势,因人而异,绝不存在哪种方法更加高级,看你对哪种方法更感兴趣吧。

你可能感兴趣的:(PTA,c语言,c++,算法)