题目描述
输入两个正整数m和n,输出m和n之间的所有素数。
要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。
int prime(int n)
{
//判断n是否为素数, 若n为素数,本函数返回1,否则返回0
}输入描述
输入两个正整数m和n,m<=n,且都在int范围内。
输出描述
输出占一行。输出m和n之间的所有素数,每个数后有一个空格。如果m到n之间没有素数,输出”No Answer”。
样例输入
2 6样例输出
2 3 5
素数:除了1和它自身外,不能被任何其他自然数整除的数
法1:暴力法

但是这样写很容易

为什么呢?
因为这种方法太慢了,完全不需要一个一个地全部遍历完。
法二:试除法
遍历n从2~√n
开根号时不要用sqrt,判断用 i * i <= n;避免精度误差

#include<stdio.h>
int prime(int n);
int main()
{
int m,n,a=0;
scanf("%d %d",&m,&n);
for(int i=m;i<=n;i++)
{
if(prime(i))
{
printf("%d ",i);
a=1;
}
}
if(a!=1)
printf("No Answer");
}
int prime(int n)
{
int i;
if(n<=1)
{
return 0;
}
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
return 0;
}
}
return 1;
}
1万+

被折叠的 条评论
为什么被折叠?



