输出素数(使用函数)
| October 19, 2007 14:55 | timmy | Via Original
输入一个正整数repeat (0 输入2 个正整数m和n(1<=m,n<=500),输出m 和n之间的所有素数,每行输出6个(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
输出语句:
printf("%d ", i);
printf("\n");
例:括号内是说明
输入:
1 (repeat=3)
1 35 (m=1, n=50)
输出:
2 3 5 7 11 13
17 19 23 29 31
#include "stdio.h"
#include "math.h"
int prime(int m);
int main( )
{
int ri,repeat;
int count, i, m, n, sum;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat;ri++){
scanf("%d%d", &m, &n);
count=0;
for(i=m;i<=n;i++){
if(prime(i)){
printf("%d ",i);
count++;
if(count%6==0)
printf("\n");
}
}
printf("\n");
}
}
int prime(int m)
{
int i,y;
if(m!=1){
for(i=2;i<=sqrt(m);i++)
if(m%i==0) break;
if(i>sqrt(m))
y=1;
else
y=0;
}
else
y=0;
return y;
}
要求定义并调用函数prime(m)判断m是否为素数。
输出语句:
printf("%d ", i);
printf("\n");
例:括号内是说明
输入:
1 (repeat=3)
1 35 (m=1, n=50)
输出:
2 3 5 7 11 13
17 19 23 29 31
#include "stdio.h"
#include "math.h"
int prime(int m);
int main( )
{
int ri,repeat;
int count, i, m, n, sum;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat;ri++){
scanf("%d%d", &m, &n);
count=0;
for(i=m;i<=n;i++){
if(prime(i)){
printf("%d ",i);
count++;
if(count%6==0)
printf("\n");
}
}
printf("\n");
}
}
int prime(int m)
{
int i,y;
if(m!=1){
for(i=2;i<=sqrt(m);i++)
if(m%i==0) break;
if(i>sqrt(m))
y=1;
else
y=0;
}
else
y=0;
return y;
}
求各位数字的立方和等于它本身的数
| October 19, 2007 14:15 | timmy | Via Original
输入一个正整数repeat (0 输入2 个正整数m和n(1<=m,n<=1000),输出m 到n之间的所有满足各位数字的立方和等于它本身的数。
输出语句:printf("%d\n", i);
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int i, digit, m, n, number, sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
for(i=m;i<=n;i++){
sum=0;
number=i;
while(number!=0){
digit=number%10;
sum=sum+pow(digit,3);
number=number/10;
}
if(sum==i)
printf("%d\n",i);
}
}
}
输出语句:printf("%d\n", i);
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int i, digit, m, n, number, sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
for(i=m;i<=n;i++){
sum=0;
number=i;
while(number!=0){
digit=number%10;
sum=sum+pow(digit,3);
number=number/10;
}
if(sum==i)
printf("%d\n",i);
}
}
}
输入一个正整数repeat (0 输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 35 (m=20, n=35)
14 16 (m=14, n=16)
输出:
count=4, sum=17 (1到10之间有4个素数:2,3,5,7)
count=3, sum=83 (20到35之间有3个素数:23, 29, 31)
count=0, sum=0 (14到16之间没有素数)
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int count, i, j, k, m, n, sum;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat;ri++){
scanf("%d%d", &m, &n);
count=sum=0;
for(i=m;i<=n;i++){
k=sqrt(i);
if(i!=1){
for(j=2;j<=k;j++)
if(i%j==0) break;
if(j>k){
count++;
sum=sum+i;
}
}
}
printf("count=%d, sum=%d\n", count, sum);
}
}
例:括号内是说明
输入:
3 (repeat=3)
1 10 (m=1, n=10)
20 35 (m=20, n=35)
14 16 (m=14, n=16)
输出:
count=4, sum=17 (1到10之间有4个素数:2,3,5,7)
count=3, sum=83 (20到35之间有3个素数:23, 29, 31)
count=0, sum=0 (14到16之间没有素数)
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int count, i, j, k, m, n, sum;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat;ri++){
scanf("%d%d", &m, &n);
count=sum=0;
for(i=m;i<=n;i++){
k=sqrt(i);
if(i!=1){
for(j=2;j<=k;j++)
if(i%j==0) break;
if(j>k){
count++;
sum=sum+i;
}
}
}
printf("count=%d, sum=%d\n", count, sum);
}
}
输入一个正整数repeat (0 将一笔零钱(大于8分,小于1元, 精确到分) 换成1分、2分和5分的硬币。输入金额,问有几种换法?要求每种硬币至少有一枚。
例:括号内是说明
输入:
2 (repeat=2)
10 (money=10分)
13 (money=13分)
输出:
2 (10分有2种换法)
4 (13分有4种换法)
#include "stdio.h"
int main( )
{
int ri, repeat;
int count, fen1, fen2, fen5, money;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &money);
count=0;
for(fen5=1;fen5<=19;fen5++)
for(fen2=1;fen2<=48;fen2++)
for(fen1=1;fen1<=money;fen1++)
if(fen5*5+fen2*2+fen1==money)
count++;
printf("%d\n", count);
}
}
例:括号内是说明
输入:
2 (repeat=2)
10 (money=10分)
13 (money=13分)
输出:
2 (10分有2种换法)
4 (13分有4种换法)
#include "stdio.h"
int main( )
{
int ri, repeat;
int count, fen1, fen2, fen5, money;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &money);
count=0;
for(fen5=1;fen5<=19;fen5++)
for(fen2=1;fen2<=48;fen2++)
for(fen1=1;fen1<=money;fen1++)
if(fen5*5+fen2*2+fen1==money)
count++;
printf("%d\n", count);
}
}
输入一个正整数repeat (0 输入一个整数,输出它的位数。
例:括号内是说明
输入
4 (repeat=4)
123456 -100 -1 99
输出
count=6 (123456的位数是6)
count=3 (-100的位数是3)
count=1 (-1的位数是1)
count=2 (99的位数是2)
#include <stdio.h>
int main( )
{
int ri, repeat;
int count;
long in;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%ld", &in);
count=0;
if(in<0)
in=-in;
do{
in=in/10;
count++;
}while(in!=0);
printf("count=%d\n", count);
}
}
例:括号内是说明
输入
4 (repeat=4)
123456 -100 -1 99
输出
count=6 (123456的位数是6)
count=3 (-100的位数是3)
count=1 (-1的位数是1)
count=2 (99的位数是2)
#include <stdio.h>
int main( )
{
int ri, repeat;
int count;
long in;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%ld", &in);
count=0;
if(in<0)
in=-in;
do{
in=in/10;
count++;
}while(in!=0);
printf("count=%d\n", count);
}
}












