C语言问题!找出100以内的全部素数

帮我看看我的程序错在哪了,我运行后输出的是所以的数
#include<stdio.h>
int main()
{
int i=2,a=1,r,w=0;
while(a<=100)
{
while (i<a&&w==0)
{
r=a%i;
if(r=0)
w=1;
else w=0;
i=i+1;
}
if (w=1)
printf("%d\n",a);
a=a+1;
}
return 0;
}

#include <stdio.h>

int IsPrime(int n)
{
    if (n <= 1) return 0;
    if (n % 2 == 0) return n == 2;

    for (int i = 3; ; i += 2)
    {
        if (i > n/i) break;  // ç­‰ä»·äºŽ i*i > n, ä¸ç”¨å¼€æ–¹
        if (n % i == 0) return 0;
    }
    return 1;
}

int main()
{
    for (int n = 0; n < 100; n++)
        if (IsPrime(n))
            printf("%d ", n);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-30
  素数是指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。要判断这个数是不是素数,需要将比它小的数(除1外)整除它,如果能就说明这不是素数
  #include<stdio.h>
  int i=2,,a=1,r,w=0;
  while(a<=100)
  {
  i=2;/* 每要执行一次内嵌循环就应该重置 i 的值 */

  while (i<a&&w==0)
  {
  r=a%i;
  if(r==0) /*r为0,就说明i能整除a,则a就不是素数*/
  {
  w=1;/* 只要有一个数能被整除,那它就不是素数,那就该退出循环 */
break;
  }
  i=i+1;/*i继续加1,重复之前的操作*/
  }
  if (w==0&&a>1)/*因为1不是素数,则要排除它*/

  printf("%d\n",a);/* 输出素数 */

  a=a+1;
  }
  return 0;
  }
第2个回答  推荐于2017-09-27
int main()
{
int i=2,a=1,r,w=0;
while(a<=100)
{
i=2; /* 每要执行一次内嵌循环就应该重置 i 的值 */
while (i<a&&w==0)
{
r=a%i;
if(r=0) /* 应该用双等号,表示判断r是否等于0或者直接写成r就行 */
{
w=1; /* 只要有一个数能被整除,那它就不是素数,那就该退出循环 */
break;
}
/*else 这个多余的
w=0;*/
i=i+1;
}
if (w=1) /* 同样应该用双等号,且应该写成w==0&&a>1,因为1不是素数 */
printf("%d\n",a); /* 输出素数 */
a=a+1;
}
return 0;
}

希望回答对你有帮助本回答被提问者采纳
第3个回答  2011-10-16
应该改为

#include "stdafx.h"
#include<stdio.h>
void main()
{
int i,a=1,r,w=0;
while(a<=100)
{
i=2;
while (i<a&&w==0)
{
r=a%i;
if(r==0)
{
w=1;
break;
}
else
w=0;
i=i+1;
}
if (w==0)
{
printf("%d\n",a);
}
else
w=0;
a=a+1;
}

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网