| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3170 人关注过本帖
标题:[讨论]第十二期编程题目(尽情发挥)
只看楼主 加入收藏
Javal
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2006-5-7
收藏
得分:0 
以下是引用I喜欢c在2007-4-20 11:36:59的发言:

#include <math.h>
#include <stdio.h>
int prime (int n)
{
int i,temp;
temp=sqrt(n);
for (i=2;i<=temp;i++)
if (n%i==0) return 0;
return 1;
}

int main()
{int num,i;
int a[20]={2,3,5,7,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73};
scanf("%d",&num);
for(i=0;i<20;i++)
if(prime(num-a[i]))
{
printf("%d = %d + %d\n",num,a[i],num-a[i]);
getch();
return 0;
}
printf("error!");
getch();
return 0;
}



a数组好象考虑多了...

大家看看~``很少做这些题,,不怕丢脸



a数组考虑少了 比如输入是503222


猝然临之而不惊,无故加之而不怒 /?spaced" target="_blank">Linux C资料
2007-04-20 13:35
hujian100
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-9-14
收藏
得分:0 

来积极参与一下,呵呵。 刚写了第一题的 第二题比较简单,我想就不用再写了。

#include <stdio.h>
#include <math.h>

#define N 10

int judgeprime(int); //该函数用来判断素数

void main()
{
int input[N];
int i, j, k;
int judge_j, judge_k; //判断标志
printf("Please input your test cases (6<=n<1000000) and terminate them with 0.\n");
for(i=0;i<N;i++)
{
scanf("%d", &input[i]);
if(input[i]==0)
break;
while(input[i]%2!=0||input[i]<6||input[i]>1000000)
{
printf("Error input! Please try again.\n");
scanf("%d", &input[i]);
}
}
for(i=0;input[i]!=0;i++)
{
for(j=3;j<=input[i]/2;j=j+2)
{
judge_j=judgeprime(j);
if(judge_j)
{
k=input[i]-j;
judge_k=judgeprime(k);
if(judge_k)
{
printf("%d = %d + %d\n", input[i], j, k);
break;
}
}
}
}
}

int judgeprime(int i)
{
int j;
for(j=3;j<=sqrt(i);j=j+2)
{
if(i%j==0)
{
return 0;
}
}
return 1;
}

[此贴子已经被作者于2007-4-20 16:25:37编辑过]


2007-04-20 15:49
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
不要那么小看第二题,我特别在下面写了个注意,要特别注意效率

雁无留踪之意,水无取影之心
2007-04-20 15:53
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
以下是引用I喜欢c在2007-4-20 11:30:59的发言:

不知道素数本身算不算...


题目要求的是偶数也就是那个even integer
所以大于6的应该没有偶数素数了

[此贴子已经被作者于2007-4-20 16:15:08编辑过]


2007-04-20 16:10
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 

开始就是没完全看懂英文的意思..
只知道大概意思
闹了很多笑话
.......................

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-20 16:24
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 

做了下第2题
因为范围娇小 所以先用筛法求出1-1000000的素数,接着就只要输入m,n判断就可以了
#include<iostream>
using namespace std;
int a[1000000];
//筛法求素数
void jp()
{
int i,j,t;
a[1]=0;
for(i=2;i<1000000;i++)
a[i]=1;
for(i=2;i<1000000;i++)
if(a[i])
for(j=i*2;j<1000000;j=j+i)
a[j]=0;
}
int main()
{
int m,n,cnt,i;
jp();
while( cin >> m >> n)
{
cnt=0;
for(i=m;i<=n;i++)
if(a[i])
cnt++;
cout << cnt << endl;
}
return 0;
}


很高兴能和大家一起学习程序! QQ:114109098
2007-04-20 16:36
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
厉害.果然速度很快

刚开始我做的时候以为筛选会很慢.没想到这么快

[此贴子已经被作者于2007-4-20 18:03:09编辑过]


2007-04-20 17:27
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
不过很浪费空间..

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-20 21:27
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
题目空间比较多.
随便浪费没关系,能做到这么快的速度了不起.郁闷当时没有想到
哈哈哈哈

2007-04-20 23:07
jiangliangju
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-9
收藏
得分:0 
a[9]=1;怎么可以啊,9又不是素数
2007-04-20 23:32
快速回复:[讨论]第十二期编程题目(尽情发挥)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018327 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved