gpt4 book ai didi

c - 这段代码打印范围内的素数有什么问题

转载 作者:行者123 更新时间:2023-11-30 20:30:42 27 4
gpt4 key购买 nike

//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 中,当我使用列表时它工作得很好。但这里它甚至没有经过输入。我犯了什么错误。我也已经编译好了

最佳答案

  1. 线路 for(i=5;i=upper;i+=2){应该是for (i = 3; i < upper; i += 2) {
  2. 线路 for(k=0;k=l;k++){应该是for (k = 2; k != i; ++k)
  3. 线路 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;
}

关于c - 这段代码打印范围内的素数有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com