功能:筛选出100~300之间的素数,并每行5个的输出并统计素数个数(函数部分功能是判断是否是素数)。
参考如下:
int fun(int m)
{
int i;
int flag = 1;
for (i = 2; i * i <= m; i++)
{
if (m % i == 0)
{
flag = 0;
break;
}
}
return flag;
}
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPrime(num)) {
printf("%d是素数。\n", num);
} else {
printf("%d不是素数。\n", num);
}
return 0;
}
供参考:
int fun(int m)
{
/*********Program**********/
int i;
if (m < 4)
return m > 1;
for (i = 2; i * i <= m; i++)
if (m % i == 0) return 0;
return 1;
/********** End ***********/
}
#include<stdio.h>
int is_prime(int n)
{
int j = 0;
for (j = 2; j < n; j++)
{
if (n%j == 0)
return 0;
}
return 1;
}
void main()
{
int i = 0;
for (i = 100; i <= 200;i++)
if (is_prime(i) == 1)
printf("%d\n", i);
}
可以进行算法改进:将判断函数 for 语句的判断条件改为 sqrt (求平方根)函数,可大大减少计算时间,提高代码运行效率,此外要引一个新的头文件 #include<math.h>
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
int j = 0;
for (j = 2; j < sqrt(n); j++)
{
if (n%j == 0)
return 0;
}
return 1;
}
void main()
{
int i = 0;
for (i = 100; i <= 200;i++)
if (is_prime(i) == 1)
printf("%d\n", i);
}
而判断一个数是否为素数的函数为:
#include<stdio.h>
#include<math.h>
int is_prime(int n)
{
int j = 0;
for (j = 2; j < sqrt(n); j++)
{
if (n%j == 0)
return 0;
}
return 1;
}