C程序查找n';次素数- #包括 #包括 #包括 整数素数(长整数); 长整型*arr//包含n个素数的数组 int main() { int i,计数=4;; 长整型n; scanf(“%lli”&n); arr=malloc(sizeof(long-long-int)*n); arr[0]=2; arr[1]=3; arr[2]=5; arr[3]=7; 如果(n==1)printf(“%lli”,arr[0]); else{if(n==2)printf(“%lli”,arr[1]); else{if(n==3)printf(“%lli”,arr[2]); else{if(n==4)printf(“%lli”,arr[3]); 其他的 { 对于(i=2;count=2),我只检查了那些*/ 计数+++;} 如果(prime(6*i+1)&&count
如果这是您的实际代码,那么您有4个错误:C程序查找n';次素数- #包括 #包括 #包括 整数素数(长整数); 长整型*arr//包含n个素数的数组 int main() { int i,计数=4;; 长整型n; scanf(“%lli”&n); arr=malloc(sizeof(long-long-int)*n); arr[0]=2; arr[1]=3; arr[2]=5; arr[3]=7; 如果(n==1)printf(“%lli”,arr[0]); else{if(n==2)printf(“%lli”,arr[1]); else{if(n==3)printf(“%lli”,arr[2]); else{if(n==4)printf(“%lli”,arr[3]); 其他的 { 对于(i=2;count=2),我只检查了那些*/ 计数+++;} 如果(prime(6*i+1)&&count,c,arrays,malloc,unsigned-long-long-int,C,Arrays,Malloc,Unsigned Long Long Int,如果这是您的实际代码,那么您有4个错误: 2行注释确定代码的一行范围 第二个if应该检查count
- 2行注释确定代码的一行范围
- 第二个if应该检查
notcount
count如果这是您的实际代码,那么您有4个bug:
- 2行注释确定代码的一行范围
- 第二个if应该检查
notcount
count您的计数器超出了数组的大小。具体来说,对于i=2,这两个条件(6i-1和6i+1)都满足,因此计数器会增加两次,从而使用arr[5]您在数组中只分配了5个位置。这是因为您检查计数器您的计数器超出了数组的大小。具体来说,对于i=2,这两个条件(6i-1和6i+1)都满足,因此计数器会增加两次,从而使用arr[5]你在数组中只分配了5个位置。这是因为你检查了country countI。我回滚了格式更改,这只是修改器喜欢的代码格式样式更改,并掩盖了其中一个错误。这是我第一次在这里查询。我是无辜的:我回滚的是NetVipeC的格式更改。你是using使用了混合的支撑样式,但大部分是块,他将整个事情更改为K&R。Try countI回滚了格式更改,这只是对修改器喜欢的代码格式的样式更改,并掩盖了其中一个错误。这是我第一次在这里查询。我是无辜的:PIt是我回滚的NetVipeC格式更改。您正在使用一个混合的支撑风格,但大部分是块,他把整个事情改成K&R。我只在这里添加了那些注释,它们不在代码中。TBH,countI只在这里添加了那些注释,它们不在代码中。TBH,count
#include <stdio.h> #include <math.h> #include <stdlib.h> int prime(long long int); long long int *arr; //array to hold n prime numbers int main() { int i,count=4;; long long int n; scanf("%lli",&n); arr=malloc(sizeof(long long int)*n); arr[0]=2; arr[1]=3; arr[2]=5; arr[3]=7; if (n==1) printf("%lli",arr[0]); else{ if (n==2) printf("%lli",arr[1]); else{ if (n==3) printf("%lli",arr[2]); else{ if (n==4) printf("%lli",arr[3]); else { for(i=2;count<n;i++) { if(prime(6*i-1)) { /*As prime nos are always 6k+1 or arr[count]=6*i-1; 6k-1fork>=2 I checked only for those*/ count++; } if(prime(6*i+1)&&count<=n) { arr[count]=6*i+1; count++; } } printf("%lli",arr[count]); }}}} //free(arr); return 0; } int prime(long long int x) { int j=1,flag=1; while(arr[j]<=sqrt(x)) { if (x%arr[j]==0) { flag=0; break; } j++; } return flag; }
while( arr[j] * arr[j] < x )