WA, line 1 他說應該是質數我顯示非質數
#include <stdio.h>
int binary_search(int num[], int a, int b, int n)
{
if(a<=b)
{
int t=(a+b)/2;
if(num[t]==n) return 1;
if(num[t]>n) return binary_search(num, a, t-1, n);
return binary_search(num, t+1, b, n);
}
return 0;
}
void find_prime_number(int n[])
{
int i, j, l=0;
n[0]=2;
for(i=3;i<=46340;i+=2)
{
for(j=0;j<=l;j++)
if(!(i%n[j])) break;
if(j>l)
n[++l]=i;
}
}
int main()
{
int n, num[4792];
find_prime_number(num);
while(scanf("%d", &n)!=EOF)
{
if(binary_search(num, 0, 4791, n))
printf("質數\n");
else
printf("非質數\n");
}
return 0;
}
WA, line 1 他說應該是質數我顯示非質數
#include
int binary_search(int num[], int a, int b, int n)
{
if(a<=b)
{
int t=(a+b)/2;
if(num[t]==n) return 1;
if(num[t]>n) return binary_search(num, a, t-1, n);
return binary_search(num, t+1, b, n);
}
return 0;
}
void find_prime_number(int n[])
{
int i, j, l=0;
n[0]=2;
for(i=3;i<=46340;i+=2)
{
for(j=0;j<=l;j++)
if(!(i%n[j])) break;
if(j>l)
n[++l]=i;
}
}
int main()
{
int n, num[4792];
find_prime_number(num);
while(scanf("%d", &n)!=EOF)
{
if(binary_search(num, 0, 4791, n))
printf("質數\n");
else
printf("非質數\n");
}
return 0;
}
Um ..
基本上這題用不到二分搜 ..
你建質數表的地方有點怪
你可以參考
http://www.csie.ntnu.edu.tw/~u91029/Prime.html