打印范围内的素数有什么问题 //打印范围内的素数 #包括 #包括 #包括 int main(){ 整数i,上,n,k,l,素数; 整数素数[300]; 素数[0]=2; printf(“输入上限:”); scanf(“%d”及以上); l=0; 对于(i=5;i=上限;i+=2){ 素数=0; 对于(k=0;k=l;k++){ 如果(i%primes[k]==0){//如果不是质数集prime=0 素数=1; 打破 } } 如果(素数==0){ l++; 素数[l]=i;//否则存储为数组 } } 对于(n=0;n=l;n++){ printf(“%d”,素数[n]);}//打印数组中的元素 返回0; //函数结尾}
为什么不起作用呢?在python中,当我使用列表时,它可以很好地工作。但在这里,它甚至没有超过输入。我犯了什么错误。我也已经编译过了打印范围内的素数有什么问题 //打印范围内的素数 #包括 #包括 #包括 int main(){ 整数i,上,n,k,l,素数; 整数素数[300]; 素数[0]=2; printf(“输入上限:”); scanf(“%d”及以上); l=0; 对于(i=5;i=上限;i+=2){ 素数=0; 对于(k=0;k=l;k++){ 如果(i%primes[k]==0){//如果不是质数集prime=0 素数=1; 打破 } } 如果(素数==0){ l++; 素数[l]=i;//否则存储为数组 } } 对于(n=0;n=l;n++){ printf(“%d”,素数[n]);}//打印数组中的元素 返回0; //函数结尾},c,C,为什么不起作用呢?在python中,当我使用列表时,它可以很好地工作。但在这里,它甚至没有超过输入。我犯了什么错误。我也已经编译过了 (i=5;i=upper;i+=2){的行应该是(i=3;iN) 返回-1; l=0; 对于(i=3;i
应该是(i=3;i
应该是(k=2;k!=i;++k)
if(i%k==0
应该是if(i%k==0)
code
可以工作:
//to print prime number within range
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int i,upper,n,k,l,prime;
int primes[300];
primes[0]=2;
printf("enter the upper limit:");
scanf("%d",&upper);
l=0;
for(i=5;i=upper;i+=2){
prime=0;
for(k=0;k=l;k++){
if(i%primes[k]==0){// if not prime set prime=0
prime==1;
break;
}
}
if (prime==0){
l++;
primes[l]=i;//else store as array
}
}
for (n=0;n=l;n++){
printf("%d",primes[n]);}//print the elements in the array
return 0;
// end of the function}
#包括
#包括
#包括
#定义N 300
int main(){
内i,上k,l;
整数素数[N];
素数[0]=2;
printf(“输入上限:”);
scanf(“%d”及以上);
如果(上部>N)
返回-1;
l=0;
对于(i=3;i
你观察到了什么?这看起来很可疑:用于(k=0;k=l;k++)
用于(i=5;i=upper;i+=2){
看起来很奇怪。你的意思是ifor
就像一个,而-只要中间条件成立,它就可以运行。记住2和3是素数,所以你的结果可能不正确如果upper
是16,或者任何偶数呢?你的外循环应该是for(i=3;i
。为什么不打印所有素数?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 300
int main(){
int i,upper,k,l;
int primes[N];
primes[0] = 2;
printf("enter the upper limit:");
scanf("%d", &upper);
if (upper > N)
return -1;
l = 0;
for (i = 3; i < upper; i += 2) {
for (k = 2; k != i; ++k)
if(i%k == 0)
break;
if (k == i)
primes[l++] = i;
}
for (i = 0; i != l; ++i)
printf("%d\n", primes[i]);
return 0;
}