帮我看看我的程序错在哪了,我运行后输出的是所以的数
#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;
}
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;
}
#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;
}
希望回答对你有帮助本回答被提问者采纳
{
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;
}
}
#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;
}
}