注册 登录
编程论坛 新人交流区

关于质数的

alicefioan37 发布于 2007-09-30 15:17, 980 次点击
大侠们,帮帮小妹吧
请用#include<stdio.h>
要求输入任意两个数,要是质数的话,就打印“质数”,要不是,就打印出它们的因数,求共有几个质数,和质数的平均值。比如,输入9,13
打印:
9:3
10:2 5
11:质数
12:2 3 4 6
13:质数
一共有2 个质数
质数的额平均值是 12

程序会一直持续要求输入两个数,直到用户输入0为止。
帮帮忙吧,小妹感激不尽!!!
14 回复
#2
缘吇弹2007-09-30 15:25
以下是引用alicefioan37在2007-9-30 15:17:41的发言:
大侠们,帮帮小妹吧
请用#include<stdio.h>
要求输入任意两个数,要是质数的话,就打印“质数”,要不是,就打印出它们的因数,求共有几个质数,和质数的平均值。比如,输入9,13
打印:
9:3
10:2 5
11:质数
12:2 3 4 6
13:质数
一共有2 个质数
质数的额平均值是 12

程序会一直持续要求输入两个数,直到用户输入0为止。
帮帮忙吧,小妹感激不尽!!!

什么是额平均值?

#3
alicefioan372007-09-30 15:27
不好意思,是笔误,就是求质数的平均值
#4
缘吇弹2007-09-30 15:30
9+11+13=33
33/3=11
怎么来个12 ?
我刚开始看的时候,看得一头雾水.
#5
alicefioan372007-09-30 15:32
9不是质数哦,
#6
缘吇弹2007-09-30 15:36
我看错,不好意思.
这次轮到我了
#7
alicefioan372007-09-30 15:40

看看一下是我做的,
当我输入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编辑过]

#8
缘吇弹2007-09-30 17:32

不好意思,我刚才出去了下.
我刚写了个,没来得及优化,你可以参考下:
#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编辑过]

#9
man4203232007-10-01 11:48

看看我的吧。。


#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");
}
}
}

#10
缘吇弹2007-10-01 12:04

下边的加了个不限次数输入,其实也蛮简单的.

#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();


}

#11
he52202007-10-01 12:07
你们都学C的???    不喜欢用  using namespace std;cout&lt;&lt; ......  cin&gt;&gt;......
#12
缘吇弹2007-10-01 12:21

今天突然有点时间,这个是有两位精度的平均数:
#include <stdio.h>
int main()
{
int a,b,max,mix,i,j,s,l,k;
float average,s1,l1;
st:
printf("\nPlease 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);

}
}
s1=s;l1=l;
average=s1/l1;
printf("\nThere are %d prime numbers.\n",l);
printf("The average value of the prime numbers is %.2f .",average);

goto st;

getche();


}

#13
缘吇弹2007-10-01 12:21
以下是引用he5220在2007-10-1 12:07:10的发言:
你们都学C的??? 不喜欢用 using namespace std;cout<< ...... cin>>......

呵呵,个人习惯!

#14
alicefioan372007-10-01 12:25
谢谢大家的帮忙!!
#15
缘吇弹2007-10-01 12:27
呵呵,以后多点来论坛交流,相信你会收获更多.
1