#include
void PRIME();
int main (void)
{
PRIME();
}
void PRIME()
{
int a = 0;
for(unsigned int n = 3;n <= 10000;n++){
for(unsigned int i = 2;i < n;i++){
if(n % i == 0){
a++;
}
}
if(a == 0){
printf("%u\n",n);
}else{
puts("");
}
}
}
1.你的代码没什么问题,就是a的值,大循环的时候重新赋予0就可以;
2.你a的值不是很重要,一旦执行a++,就应该break掉,这样效率会高点;
3.还有一点2也是质数。
#include<stdio.h>
#include<stdlib.h>
void PRIME();
int main (void)
{
PRIME();
return 0;
}
void PRIME()
{
int a = 0;
for(unsigned int n = 2;n <= 10000;n++){
for(unsigned int i = 2;i < n;i++){
if(n % i == 0){
a++;
break;
}
}
if(a == 0){
printf("%u\n",n);
}else{
//puts("");
}
a = 0;
}
}
a是在循环外定义赋值的,第一次输出之后下一次循环a不为0,之后一直都不是0,所以每次你都要重新赋值为0
a=0
for(unsigned int i = 2;i < n;i++){
if(n % i == 0){
a++;
}
}
if(a == 0){
printf("%u\n",n);
}else{
puts("");
}
}