想用c语言输出从1到n所有数中的素数 (1,2这两个数可能还有点缺陷)但是它为什么只能输出一个1啊 是循环没有进行吗???
#include <stdio.h>
int isprime(int i);
int main()
{
int b;
printf("请输入一个数:");
scanf("%b",&b);
int i;
for(i=1;i<=b;i++){
if(isprime(i)){
printf("%d",i);
}
}
return 0;
}
int isprime(int i){
int a;
int ret=1;
for(a=2;a<i;a++){
if(i%a==0){
ret=0;
break;
}
}
return ret;
}
scanf("%b",&b);改成scanf("%d",&b);
具体代码如下:
#include <stdio.h>
int isprime(int i);
int main()
{
int b;
printf("请输入一个数:");
scanf("%d",&b);
int i;
for(i=1;i<=b;i++)
{
if(isprime(i))
{
printf("%d ",i);
}
}
return 0;
}
int isprime(int i){
int a;
int ret=1;
if(i<2) return 0; //添加这一句
for(a=2;a<i;a++){
if(i%a==0)
{
ret=0;
break;
}
}
return ret;
}
有多个问题,改好了:
#include <stdio.h>
int isprime(int i);
int main()
{
int b;
int i;
printf("请输入一个数:");
scanf("%d",&b);
for(i=1;i<=b;i++){
if(isprime(i)){
printf("%3d",i);
}
}
return 0;
}
int isprime(int i){
int a;
int ret=1;
for(a=2;a<i;a++){
if(i%a==0){
ret=0;
break;
}
}
return ret;
}
这里出现错误了哦,是%d,是scanf("%d",&b);
scanf("%b",&b); 改成 scanf("%d",&b);
#include <stdio.h>
int isprime(int i);
int main()
{
int b;
printf("请输入一个数:");
scanf("%d",&b);
int i;
for(i=2;i<=b;i++)
{
if(isprime(i))
{
printf("%d",i);
}
}
return 0;
}
int isprime(int i)
{
for(int a=2;a*a<=i;a++)
{
if(i%a==0)
return 0;
}
return 1;
}