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);
}
}
}
}
if t%j==0 表示不是素数,此时应该break,测试下一个数
而是素数的条件是j循环完了都没有跳出,此时j 应该等于t,满足这个条件再输出即可 #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;
} ba21 发表于 2020-4-17 21:29
谢谢
页:
[1]