2895014608 发表于 2020-4-17 20:45:04

c语言 判断素数

输入一个整数,判断并输出该整数以内的所有素数(刚学c语言,写了快一个小时,还是不行,麻烦帮帮我)
#include<stdio.h>
int main()
{
        int i,j,t,a=0;
        printf("请输入一个整数:\n");
        scanf("%d",&i);
        if(i<2)
                printf("非法输入,请重新尝试");
        else if(i>=2)
        {
                for(t=i;t>=2;t--)
                {
                        a=0;
                        for(j=2;j<t;j++)
                        {
                                if(t%j==0)
                                {
                                        a++;

                                }
                               
                        }
                        if(a>=1)
                        {
                printf("%d\n",t);
                        }
                }
                       
                       

                                       
        }       


}

BngThea 发表于 2020-4-17 21:28:14

if t%j==0 表示不是素数,此时应该break,测试下一个数
而是素数的条件是j循环完了都没有跳出,此时j 应该等于t,满足这个条件再输出即可

ba21 发表于 2020-4-17 21:29:56

#include<stdio.h>

int main()
{
      int num, x, y, flag; // 为了区分用x, y (i, j容易混淆)

      printf("请输入一个整数:\n");
      scanf("%d",&num);

      if(num<2)
                {
                        printf("非法输入,请重新尝试");
                        return 0;
                }

                // 既然num<2非输入,那么剩下的就是正确输入


                // 素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除
      // 既然除了1和它本身外,不能被其他自然数整除, 那么就挨个除,再判断
                // 如: 数字8 ,只要2 - 7 有一个能整除,那么8就不是素数


                // 一个大于1的自然数
                for(x=2; x<=num; x++)
                {
                        // 先搞个变量flag做个记号,记录是不是素数,先假设它是
                        flag = 1; // 1是
                        for(y=2; y<x; y++) // 除了1和它本身外,不能被其他自然数整除。 所以从2开始
                        {
                                if( (x%y)==0 )
                                {
                                        flag = 0; // 不是
                                        break;
                                }
                        }

                        // 是素数输出
                        if(flag)
                        {
                                printf("%d ", x);
                        }

                }

                return 0;
}

2895014608 发表于 2020-4-17 21:49:44

ba21 发表于 2020-4-17 21:29


谢谢
页: [1]
查看完整版本: c语言 判断素数