C语言程序:
#include
#include
int isPrime1(int num, int *c);
int isPrime2(int num, int *c);
int isPrime3(int num, int *c);
void main()
{
int n, c1, c2, c3;
printf("%-8s%-20s%-20s%-20s\n", "素数", "算法1循环次数", "算法2循环次数", "算法3循环次数");
for(n=100; n<=200; n++)
{
if(isPrime1(n, &c1) == 1)
{
isPrime2(n, &c2);
isPrime3(n, &c3);
printf("%-8d%-20d%-20d%-20d\n", n, c1, c2, c3);
}
}
}
//算法1
int isPrime1(int num, int *c)
{
int i;
for(i=2; iif(num % i == 0)
break;
*c = num - 2;
return (i < num ? 0 : 1);
}
//算法2
int isPrime2(int num, int *c)
{
int i;
for(i=2; i<=num/2; i++)
if(num % i == 0)
break;
*c = num/2 - 1;
return (i <= num/2 ? 0 : 1);
}
//算法3
int isPrime3(int num, int *c)
{
int i, k = (int)(sqrt(num));
for(i=2; i<=k; i++)
if(num % i == 0)
break;
*c = k - 1;
return (i <= k ? 0 : 1);
}
运行测试: