//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}
为什么不起作用?在python中,当我使用列表时它可以正常工作。但是在这里它甚至没有超出输入。我犯了什么错误。我也已经编译了
答案 0 :(得分:0)
for(i=5;i=upper;i+=2){
行应为for (i = 3; i < upper; i += 2) {
for(k=0;k=l;k++){
行应为for (k = 2; k != i; ++k)
if(i%primes[k]==0
行应为if(i%k == 0)
以下code
可以工作:
#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;
}