一个求素数的C编程问题,不知道自己错在哪里

来源:百度知道 编辑:UC知道 时间:2024/07/07 16:20:13
题目是这样的:输入一组数字(不大于50个),输出其中的素数。

我编的程序是:

#include <stdio.h>
main()
{
int a[50],n,i,j;
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d ",a+j);
for(j=0;j<n;j++)
for(i=2;i<a[j];i++)
if(a[j]%i==0) break;
else
printf("%d ",a[j]);
printf("\n");
}

就是这样了,打出来以后十分奇怪,我也不知道错在哪里。谢谢各位大虾指点o>_<o

你的方法有问题
#include<stdio.h>
void main()
{
int a[50],i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<n;j++)
{
for(i=2;i<=a[j]/2;i++)
if(a[j]%i==0)break;
if(i>a[j]/2)
printf("%d ",a[j]);
}
} 应该是这样的

给你说一大堆废话也没用,我把你的程序稍微改了一下,你肯定能看懂,看不懂就CALL我,祝你的C语言学的越来越好!!!
请LZ注意,此代码可直接复制到VC当中去运行,将不会出现编译错误!!!!

#include <stdio.h>
main()
{
int a[50],n,i,j;
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",a+j);//注意对比,你的是scanf("%d ",a+j);
//去掉%d后面的空格就对了
for(j=0;j<n;j++)
{
for(i=2;i<a[j];i++)
if(a[j]%i==0) break;
if(i==a[j])
printf("%d ",a[j]);
}