i也不知道 发表于 2019-10-12 10:27:36

打印素数求助:为啥我打印出来2与3大量重复;


[*]#include <stdio.h>
[*]
[*]int main()
[*]{
[*]
[*]    int check_prime(int n);
[*]    int number,i;
[*]
[*]    for ( i = 3; i < 200; i++)
[*]    {
[*]      printf("%d\t", check_prime(i));
[*]    }
[*]    return 0;
[*]}
[*]
[*]int check_prime(int n)
[*]{
[*]    int i;
[*]    for ( i = 2; i < n; i++)
[*]    {
[*]      if (n % i == 0)
[*]      {
[*]            return i;
[*]      }
[*]    }
[*]}
[*]求助:为啥我打印出来2与3大量重复;



打印结果:
3       2       5       2       7       2       3       2       11      2       13      2       3       2       17   219      2       3       2       23      2       5       2       3       2       29      2       31      2       3      25       2       37      2       3       2       41      2       43      2       3       2       47      2       7      23       2       53      2       5       2       3       2       59      2       61      2       3       2       5      267      2       3       2       71      2       73      2       3       2       7       2       79      2       3      283      2       5       2       3       2       89      2       7       2       3       2       5       2       97   23       2       101   2       103   2       3       2       107   2       109   2       3       2       113    25       2       3       2       7       2       11      2       3       2       5       2       127   2       3      2131   2       7       2       3       2       137   2       139   2       3       2       11      2       5      23       2       149   2       151   2       3       2       5       2       157   2       3       2       7      2163   2       3       2       167   2       13      2       3       2       173   2       5       2       3      2179   2       181   2       3       2       5       2       11      2       3       2       191   2       193    23       2       197   2       199











[*]


人造人 发表于 2019-10-12 12:19:51

check_prime函数找到的时候返回变量 i
没有找到的时候怎么办?

人造人 发表于 2019-10-12 12:21:00

int check_prime(int n)
{
    int i;
    for ( i = 2; i < n; i++)
    {
      if (n % i == 0)
      {
            return i;
      }
    }
   
   // 执行到这里怎么办?
}

matrixgadener 发表于 2019-10-12 18:38:39

#include <stdio.h>
int check_prime(int n);
int main()
{

    //int check_prime(int n);
    int i;

    for ( i = 3; i < 200; i++)
    {
      //printf("%d\t", check_prime(i));
      if(check_prime(i))
            printf("%d\t",i);
    }
    return 0;
}

int check_prime(int n)
{
    int j;
    for ( j = 2; j < n; j++)
    {
      if (n % j == 0)
      {
            return 0;
      }
      else
      {
            if(j==n-1)
                return n;
      }
    }
}

说明:
1. 函数声明在外部
2. 子函数返回int型,所以你要自己规定不是素数的返回值,再利用这个返回值做判断。

输出:
3       5       7       11      13      17      19      23      29      31      37      41      43      47      53
59      61      67      71      73      79      83      89      97      101   103   107   109   113   127
131   137   139   149   151   157   163   167   173   179   181   191   193   197   199
页: [1]
查看完整版本: 打印素数求助:为啥我打印出来2与3大量重复;