user-0 提问: 求大佬指点

回复:
user: user-1
content: # include <stdio.h>   # include <math.h>   # define N 10000   char A[N];    int main()   {       int i,j,Q;       for(A[0]=A[1]=1,Q=sqrt(N)+1,i=2;i<Q;i++) 		if(!A[i])for(j=i*i;j<N;j+=i) 			A[j]=1;//经过筛法后 如果i是质数则S[i]=0 否则为1   		printf("[2,%d)的质数:\n",N);     for(i=0;i<N;i++)       if(!A[i])printf("%d ",i);       return 0;   }

user: user-2
content: 1.素数的定义是只能被1和它本身整除，比如说10这个数，从2—9，只要除出来有不是0的就不是素数，否则就是素数 2.break就是结束本次循环，continue是这次循环不执行了，进入下一次循环

user: user-3
content: 1.    判断一个数是否为素数只需用2到这个数的平方根去除他本身，如果能够被整除，说明他不是素数。 2.break语句用来从循环体跳出循环体，即提早结束循环，接着执行循环下面的语句，它也可以用在switch语句当中；continue语句是结束本次循环的执行，即不再执行continue语句之后的语句，转入下一次循环条件的判断和执行。简而言之就是，break语句跳出一整个循环，continue语句跳出本次循环，进入下一次循环。

user: user-1
content: 用改进的埃氏筛法 筛1--N之间的质数的复杂度O（sqrt(N)loglogN）

user: user-4
content: #include <stdio.h>  int isprime(int t) {     int i;      if (t != 2 && !(t % 2))         return 0;      for(i = 2; i*i <= t; i++)         if (!(t % i))             return 0;     return 1; }   int main() {     int n,count,i;      while(scanf("%d",&n) != EOF && n) {         count = 0;         if(n <= 1) {             ;         } else {             count++;             for(i = 3; i <= n; i++)                 if(isprime(i))                     count++;         }         printf("Total prime is %d \n",count);     }     return 0; }  参考一下吧

user: user-4
content: #include<stdio.h>  #define MAX_LEN 1001  void print_all_prime(int *array, int len); void print_number_prime(int *prime_list, int len, int idx);  int main(void) {     int i;     int N, count;     int arr[MAX_LEN];    //限制数据量大小为1000      printf("你想求多少以内的素数:");     scanf("%d", &N);      for(i = 1; i <= N; i++) //为方便计，从1起         arr[i] = 1;      count = 2;  //筛选起点为2     while(count <= N/2) //显然：count不会超过N/2,必能使留下的数全为素数。     {         for(i = count+1; i <= N; i++) {             if(arr[i] == 1 && i % count == 0)                 arr[i] = 0;         }         for(i = count+1; i <= N; i++) {             if(arr[i] == 1) {                 count = i;                 break;             }         }     }     print_all_prime(arr, N);     print_number_prime(arr, N, 5);      return 0; }  void print_all_prime(int *array, int len) {     int i, cnt = 0;      printf("%d以内的素数为:\n", len);     for(i = 2; i <= len;i++)         if(array[i]) {             cnt++;             printf("%d ", i);             if(!(cnt % 10)) //增设cnt为输出换行                 printf("\n");         }     printf("\n"); }  void print_number_prime(int *array, int len, int idx) {     int i, cnt = 0;      for (i = 2; i < len; i++) {         if (array[i] == 1) {             cnt++;             if (cnt == idx) {                 printf("NO.%d prime is %d\n", idx, i);                 break;             }         }      }     if (i >= len) {         printf("不存在第%d 素数\n", idx);     } } 参考一下吧  不一定一定要用到break, continue;

user: user-5
content: 代码介意参照楼上“自信男孩的” 我说一下break和continue：在一个循环中如 for，while，do-while（一般只有break用在switch语句中） break:跳出当前循环，并不执行下面的代码（即brake后到循环“}”之前的代码），只跳出一层 continue：是跳出本次循环，进入下一次循环。列：for循环中遇到continue，执行for循环语句第三个表达式，再判断表达式二进行下一次是否循环 （粉我，了解更多嘿嘿！）

user: user-6
content: Finding prime numbers - Kenneth Haugland  Different schemas for finding prime numbers explained with code http://www.codeproject.com/Articles/429694/Finding-prime-numbers

user: user-0
content: 谢谢各位大佬，刚开始用这个论坛，没找到怎么单独回复，抱歉，等我仔细研究下