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