我现在这个程序要求输入一个数,要求把比这个数小的素数写出来,但我这个只能写出小于这个数的非素数,而且还会重复几次,请问该怎么办
#include<stdio.h>
int main()
{
int i,j,num;
scanf("%d",&num);
if(num>0){
for(i=2;i< num;i++){
for(j=2;j<i ;j++){
if(i%j==0)
break;
}
if(i==j)
printf("%d ",i);
}
}else{
printf("error");
}
return 0;
}
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int fun(int lim, int aa[MAX])
{
int i, j,k=0;
for (i = 2; i <= lim; i++)//罗列每个数
{
for (j = 2; j < i; j++)//判断是否为质数(素数:只可以被1和本身整除,必须大于1)
{
if (i%j == 0) break;
}
if (j >= i) aa[k++] = i;
}
return k;
}
void main()
{
int limit,i,sum;
int aa[MAX];
printf("输入一个整数:");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i<sum;i++)
{
if(i%10==0&&i!=0) /*每行输出10个数*/
printf("\n ");
printf("%5d ",aa[i]);
}
}
题主代码修改如下,供参考:
#include <stdio.h>
int main()
{
int num,i,j;
scanf("%d", &num);
if (num > 0)
{
for (i = 2; i < num; i++) //for (i = 2; i <= num; i++) 修改
{
for (j = 2; j < i; j++) //for (j = 2; j <= i; j++) 修改
{
if (i % j == 0) break; //修改
}
if (j == i)
printf("%d ", i);
}
}
else
printf("error\n");
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!