切换到宽版
  • 5833阅读
  • 3回复

求助:求素数问题! [复制链接]

上一主题 下一主题
离线sluck
 
只看楼主 倒序阅读 0 发表于: 2007-12-30
我想用C写一个求0到32766间的素数的程序,代码如下

  1. #include <stdio.h>
  2. #define maxint 32766
  3. void main()
  4. {
  5.   int pr[32766],table[32766];
  6.   int i=2,j,count=0;
  7.   for(i=0;i<=maxint;i++)
  8.     table[i]=1;
  9.   table[1]=0;             
  10.   while(i<maxint)
  11.     {
  12.       if (table[i])
  13.     {
  14.       j=2*i;
  15.       while(j<maxint)
  16.         {
  17.           table[j]=0;
  18.           j+=i;
  19.         }
  20.     }
  21.       i++;
  22.     }                      /* if table[x] is 1 then x is a prime */
  23.               /* else x is not a prime */
  24.   for(i=1;i<=maxint;i++)
  25.     if (table[i])
  26.       {
  27.     count++;
  28.     pr[count]=i;
  29.       }                    /* put the primes into array pr */
  30.   for(i=1;i<=count;i++)
  31.     printf("%d",pr[i]);    /* print all the primes found */
  32. }


但总是出错,请高手帮忙啊。错误信息如图

3Q~~~

离线xyj
只看该作者 1 发表于: 2008-01-03
不懂C,LZ解释哈
离线zcy2008
只看该作者 2 发表于: 2008-01-12
标程如下(每行5个,C++程序)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int i,n,j,t=0,k=1,s=1;
    cin>>n;
    if(n>=2)
    cout<<"2"<<" ";
    for(i=3;i<=n;i+=2)
    {t=0;
    if(i%2==0) continue;
    for(j=3;j<=sqrt(i);j+=2)
    {if(i%j==0) {t=1;break;}}
    if(t==0)
    {cout<<i<<" ";
      k++;s++;}
    if(k>=5) {cout<<"\n";
              k%=5;}
    }
    cout<<"\n"<<"the total is:"<<s;
    while(1);
}
离线zcy2008
只看该作者 3 发表于: 2008-01-12
这太水了
快速回复
限100 字节
 
上一个 下一个