请用#include<stdio.h>
要求输入任意两个数,要是质数的话,就打印“质数”,要不是,就打印出它们的因数,求共有几个质数,和质数的平均值。比如,输入9,13
打印:
9:3
10:2 5
11:质数
12:2 3 4 6
13:质数
一共有2 个质数
质数的额平均值是 12
程序会一直持续要求输入两个数,直到用户输入0为止。
帮帮忙吧,小妹感激不尽!!!
看看一下是我做的,
当我输入4的时候,居然说4是质数,然后又写出它的因数2, 不知道错在哪里, 而且,当用户第二次输入2个数字的时候,又有错误,比如,第一次输入9,13,共有2个质数,第二次我输入5,9,居然显示有4个质数,看傻了眼, 好像把第一次的都给加进去了,
# include <stdio.h>
int main ()
{
int x , y , a , b ,c,d ;
b=0;
c=0;
printf("please enter two numbers");
scanf("%d %d",&x,&y);
while( x !=0 && y !=0)
{
for (a=x; a<=y ;a++)
{
d=1;
for (int m = 2; m<a/2; m++)
if ( a%m == 0)
d = 0;
if(d == 1)
{
printf("%d:prime",a);
b++;
c=c+a;
}
else
printf("%d:",a);
for (int n = 2; n< a; n++)
if ( a%n == 0)
printf("%d ",n);
printf("\n");
}
printf("there are %d prime numbers.\n", b);
printf("the average value of the prime numbers is %d.\n",c/b);
printf("please enter two numbers");
scanf("%d %d",&x,&y);
}
}
[此贴子已经被作者于2007-9-30 15:42:16编辑过]
不好意思,我刚才出去了下.
我刚写了个,没来得及优化,你可以参考下:
#include <stdio.h>
int main()
{
int a,b,max,mix,i,j,s,l,k;
printf("Please enter two numbers:");
scanf("%d,%d",&a,&b);
s=0;l=0;
if (a>b)
{
max=a;
mix=b;
}
else
{
max=b;
mix=a;
}
for(i=mix;i<=max;i++)
{
for(j=2;j<=i;j++)
if (i%j==0)
{
if (i!=j)
printf("\n%d:",i);
for(k=2;k<i;k++)
{
if (i%k==0)
printf("%d ",k);
}
break;
}
if (i==j)
{
s=s+i;
l=l+1;
printf("\n%d:prime",i);
}
}
printf("\nThere are %d prime numbers.\n",l);
printf("The average value of the prime numbers is %d.\n",s/l);
getche();
}
[此贴子已经被作者于2007-10-1 11:59:58编辑过]
看看我的吧。。
#include<stido.h>
void main()
{
int a,b;
void returnx(int x,int y);
scanf("%d %d",&a,&y);
returnx(a,b);
}
void returnx(int x,int y)
{
int i,j,k=1;
for(j=x;j<=y;j++)
{
printf("%d:",j);
for(i=2;i<=(j/2);i++)
{
if(j%i!=0)
{
k=1;
break;
}
else
{
k=0;
break;
}
if(k==1)
printf(质数.\n");
else
{
printf("因数是:");
for(i=2;i<=(j/2);i++)
if(j%i==0)
printf("-%d",i);
printf("\n");
}
}
}
下边的加了个不限次数输入,其实也蛮简单的.
#include <stdio.h>
int main()
{
int a,b,max,mix,i,j,s,l,k;
st:
printf("Please enter two numbers:");
scanf("%d,%d",&a,&b);
s=0;l=0;
if (a>b)
{
max=a;
mix=b;
}
else
{
max=b;
mix=a;
}
for(i=mix;i<=max;i++)
{
for(j=2;j<=i;j++)
if (i%j==0)
{
if (i!=j)
printf("\n%d:",i);
for(k=2;k<i;k++)
{
if (i%k==0)
printf("%d ",k);
}
break;
}
if (i==j)
{
s=s+i;
l=l+1;
printf("\n%d:prime",i);
}
}
printf("\nThere are %d prime numbers.\n",l);
printf("The average value of the prime numbers is %d.\n",s/l);
goto st;
getche();
}