烟台大学oj题目,给在绞尽脑汁不得其解的宝子们参考。
题目描述
从键盘上输入任意一个整数,然后判断该数是否为素数;如果是素数则输出 This is a prime.
否则输出 This is not a prime.
输入
输入任意一个整数 n。
输出
判断 nnn 是否为素数,并输出判断结果:如果 nnn 是素数则输出 This is a prime.
否则输出 This is not a prime.
方法一:调用函数
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
for(int i = 2;i <= sqrt(n) + 1;i++){//从2开始哦,也可以直接i < n;
if(n % i == 0)//也就是i是n的因子
return 1;//不是素数返回1
}
return 0;//是素数返回0
}
int main()
{
int num;
scanf("%d", &num);
int f;
f = is_prime(num);//调用素数判断函数
if(f == 1)
printf("This is not a prime.");
else
printf("This is a prime.");
return 0;
}
方法二:
#include<stdio.h>
#include<math.h>//sqrt是用来开方,需要这个头文件才能用
int main()
{
int n;
scanf("%d", &n);
int f = 0;
for(int i = 2;i <= sqrt(n) + 1;i++){//从2开始哦,也可以直接i < n;
if(n % i == 0)//也就是i是n的因子
f = 1;//不是素数,f变成1
}
//是素数f就是0
if(f == 1)
printf("This is not a prime.");
else
printf("This is a prime.");
return 0;
}
输出一定范围内的素数
题目描述
输入两个大于1的整数m和n,n大于m,输出m到n之间的所有素数(包括m和n)
输入
两个大于1的整数m和n(n>m)
输出
输出m和n之间的所有素数(包括m和n),每输出10个素数需要回车换行
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
for(int i = 2; i <= sqrt(n); i++) //从2开始哦,也可以直接i < n;
{
if(n % i == 0)//也就是i是n的因子
return 1;//不是素数返回1
}
return 0;//是素数返回0
}
int main()
{
int m, n;
scanf("%d%d", &m,&n);
int count = 0;
for(int i = m; i <= n; i++)
{
if(is_prime(i) == 0)
{
count++;//用count记录素数个数
printf("%d ",i);
if(count == 10)//达到10个就换行
printf("\n");
}
}
return 0;
}