C语言习题5.10--整数n和m之间的素数个数
时间: 1ms 内存:128M
描述:
小奶瓶都要上大三了,大一的高数还挂着呢,不光他头痛,教高数的"高"老师也是无奈,为了不必要的麻烦,"高"老师决定尽全力给小奶瓶加分,听说小奶瓶C语言学得不错,"高"老师就让他编写一个“求两个数之间的素数个数”的程序并许诺完成后给小奶瓶加59分。这样好的机会小奶瓶当然不能放过,但是他最近公务繁忙,不能及时完成这个程序。现在他把已经写的差不多的程序给你,让你帮他完成这个任务。请你帮帮这个可爱的小男生吧~
#include <stdio.h>
int primes(int n,int m); /*求n,m之间素数个数*/
int is_prime(int n); /*判断是否为素数*/
int main()
{
int number; /*素数个数*/
int n,m;
scanf("%d %d",&n,&m);
number=primes(n,m); /*调用求素数个数的函数,并将返回值赋值给number*/
printf("%d\n",number);
return 0;
}提交时只需提交primes和is_prime两个函数
请注意:当n或者m小于2时的情况
输入:
两个数
输出:
两个数之间的素数个数
示例输入:
6 15
示例输出:
3
提示:
参考答案(内存最优[1092]):
#include <stdio.h>
int primes(int n,int m); /*求n,m之间素数个数*/
int is_prime(int n); /*判断是否为素数*/
int main()
{
int number; /*素数个数*/
int n,m;
scanf("%d %d",&n,&m);
number=primes(n,m); /*调用求素数个数的函数,并将返回值赋值给number*/
printf("%d\n",number);
return 0;
}
int primes(int n,int m)
{
int i,t,flag,number=0;
if(n>m){
t=n;
n=m;
m=t;
}
for(i=n;i<=m;i++){
flag=is_prime(i);
if(flag==1)number++;
}
return number;
}
int is_prime(int n)
{
int i;
if(n==1 || n==0)return 0;
for(i=2;i<=n/2;i++){
if(n%i==0)return 0;
}
return 1;
}
参考答案(时间最优[0]):
#include <stdio.h>
int primes(int n,int m); /*求n,m之间素数个数*/
int is_prime(int n); /*判断是否为素数*/
int main()
{
int number; /*素数个数*/
int n,m;
scanf("%d %d",&n,&m);
number=primes(n,m); /*调用求素数个数的函数,并将返回值赋值给number*/
printf("%d\n",number);
return 0;
}int is_prime(int n)
{
int i;
if(n<2)
return 0;
for(i=2;n%i!=0;i++);
if(i<n)
return 0;
return 1;
}
int primes(int n,int m)
{
int s=0;
if(n>m)
{
n=m+n;
m=n-m;
n=n-m;
}
for(n;n<=m;n++)
{
if(is_prime(n)==1)
s++;
}
return s;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。