题目描述
写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
输入
一个数 nn (n<=1000000007)
如果是素数输出 prime
,如果不是输出 not prime
。
输入输出样例
样例输入 #1
33
样例输出 #1
not prime
样例输入 #2
97
样例输出 #2
prime
提示
主函数已给定如下,提交时不需要包含下述主函数。
C:
int main()
{
int flag, n;
int is_prime(int);
scanf("%d", &n);
flag= is_prime(n);
if (flag == 1)
printf("prime\n");
else
printf("not prime\n");
return 0;
}
代码:
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
int k = (int)sqrt((double)n);
if (n <= 1) {
return 0; // 1 或更小的数不是质数
}
if (n <= 3) {
return 1; // 2 和 3 是质数
}
if(n % 2 == 0||n % 3 == 0)
{
return 0;
}
for(int i=5;i<=k;i += 6)
{
if(n % i == 0||n%(i+2) == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int flag, n;
int is_prime(int);
scanf("%d", &n);
flag= is_prime(n);
if (flag == 1)
printf("prime\n");
else
printf("not prime\n");
return 0;
}
编译结果: