C语言中的极小素数生成器
我必须找到所有至少有两个数字的最小素数。最小素数是子序列不是素数的素数。为了正确完成练习,我不能使用数组(它们是被禁止的),我必须定义C语言中的极小素数生成器,c,C,我必须找到所有至少有两个数字的最小素数。最小素数是子序列不是素数的素数。为了正确完成练习,我不能使用数组(它们是被禁止的),我必须定义maxnumb。我这里的问题是无法打印最小值。到目前为止,我的问题是: #include <stdio.h> #define MAXNUMB 100 int IsPrime(int number); int main (void) { int i,j,x,k,mask,max=1,mult,sub,c,number; for (i = 11
maxnumb
。我这里的问题是无法打印最小值。到目前为止,我的问题是:
#include <stdio.h>
#define MAXNUMB 100
int IsPrime(int number);
int main (void) {
int i,j,x,k,mask,max=1,mult,sub,c,number;
for (i = 11 ; i < MAXNUMB; i += 2 ){
number=IsPrime(i);
if (number==1) {
int length = 0;
int tmp=i;
while (tmp != 0) {
tmp /= 10;
length++;
}
for (x=1;x<length*2;x++) {
mask=x;
mult=1;
sub=0;
int num=i;
int counter=0;
while(num!=0) {
if ( mask % 2 == 1 ) {
sub += num % 10 * mult;
mult *= 10;
}
num /= 10;
mask /= 2;
}
while (sub!=i){
int min=i;
k=IsPrime(sub);
if(k==1)
counter+=1;
printf("%d sub \n",sub);
printf("%d count \n",counter);
break;
if(counter==0)
printf(" minimal \n",min);
}
}
}
}
return 0;
}
int IsPrime(int i) {
int j;
if (i==1)
return 0;
for (j=2; j*j<=i; j++) {
if (i % j == 0)
return 0;
}
if (j*j>i )
return 1;
}
#包括
#定义MAXNUMB 100
int-IsPrime(int-number);
内部主(空){
int i,j,x,k,mask,max=1,mult,sub,c,number;
对于(i=11;i 对于(x=1;x这是因为您没有告诉它打印min
。
更改此行:
printf(" minimal \n",min);
为此:
printf("%d minimal \n",min);
实现我认为你想要做的事
printf
使用打印变量。阅读一些关于如何使用它们的教程是值得的:)。这是因为在所讨论的行上方有一个break
语句,所以它永远不会被执行
printf("%d sub \n",sub);
printf("%d count \n",counter);
break; // <<-- remove this line
if(counter==0)
printf(" minimal \n",min);
我还可以在处看到一个无限循环,而(sub!=I)
,因为sub在循环内没有变化。
要进一步测试me,请添加一个printf(“有问题的循环”)
在循环内部,自己看看它会打印多少次语句而不打印数字。你能给出一些最小素数的例子吗..并更清楚地解释它们,但我删除了break,我有一个无穷大的loppSo将break
进一步向下移动,或者重新思考逻辑。
if(counter==0)
printf("%d minimal \n",min); // add format specifier