C语言题目:随机输入一个整数,判断能否被3或者5整除,如果能整除就输出该数,否则什么也不输出。

共有 4124 人关注过本帖
标题:输出1000以内能被3整除且至少有一位是3得数,每行输出4个
等 级:论坛游民
帖 子:126
专家分:54
结帖率:93.1%
&&已结贴√
&&问题点数:20&&回复次数:27&&&
输出1000以内能被3整除且至少有一位是3得数,每行输出4个
大家看看这个程序哪里有错误,还有没有更简洁效率更高的程序?
#include&stdio.h&
void main()
&&& int i,j,k;
&&& for(i=0;i&=9;i++)
&&&&&&&&if((i+5)%3==0)
&&&&&&&&&&&&printf(&%3d %3d&,i*10+5,50+i);
&&&&&&&&&&&&k+=2;
&&&&&&&&&&&&if(k%4==0)
&&&&&&&&&&&&&&& printf(&\n&);
&&&&&&&&for(j=0;j&=9;j++)
&&&&&&&&&&&&if((i+j+5)%3==0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(i!=j)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if((i!=5)&&(j!=5))
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&printf(&%3d %3d &,500+10*i+j,500+10*j+i);
&&&&&&&&&&&&&&&&&&&&&&&&k+=2;
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&\n&);
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&%3d %3d &,100*i+10*j+5,100*i+50+j);
&&&&&&&&&&&&&&&&&&&&&&&&&&& k+=2;
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&\n&);
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&%3d %3d &,100*j+10*i+5,100*j+50+i);
&&&&&&&&&&&&&&&&&&&&&&&&&&& k+=2;
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&\n&);
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&if(i==5)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==1||k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&%3d %3d %3d &,550+i,505+10*i,100*i+55);
&&&&&&&&&&&&&&&&&&&&&&&&&&& k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&&&& if(k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&printf(&\n&);
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& if(k%4==2)
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&printf(&%3d %3d \n%3d &,550+i,505+10*i,100*i+55);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==3)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&printf(&%3d \n%3d %3d &,550+i,505+10*i,100*i+55);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&if(j==5)
&&&&&&&&&&&&&&&&&&&&{}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& if(i==j&&i!=5)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(k%4==1||k%4==0)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&printf(&%3d %3d %3d &,500+10*i+i,100*i+50+i,100*i+10*i+5);
&&&&&&&&&&&&&&&&&&&&&&&&k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==0)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&printf(&\n&);
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&if(k%4==2)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&%3d %3d \n%3d &,500+10*i+i,100*i+50+i,100*i+10*i+5);
&&&&&&&&&&&&&&&&&&&&&&&&&&& k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& printf(&%3d \n%3d %3d &,500+10*i+i,100*i+50+i,100*i+10*i+5);
&&&&&&&&&&&&&&&&&&&&&&&&&&& k+=3;
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& if(i==j&&i==5)
&&&&&&&&&&&&&&& printf(&%3d &,555);
&&&&&&&&&&&&}&&&&&&&&&&&&
搜索更多相关主题的帖子:
等 级:版主
威 望:178
帖 子:3294
专家分:21129
确实写的比较长,估计三分之一的代码就足足有余了。最笨的方法就是从3开始,增量为3,再判断该数,若其某位含有3即是符合条件的。
★★★★★为人民服务★★★★★
来 自:魔術の禁書目錄
等 级:小飞侠
帖 子:952
专家分:2929
#include &stdio.h&
int main()
&&& for (n=3; n&1000; n+=3)
&&&&&&&&if (n%10==3 || n/10%10==3 || n/100==3)
&&&&&&&&&&&&printf(&%d,&, n);
&&& return 0;
永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
来 自:魔術の禁書目錄
等 级:小飞侠
帖 子:952
专家分:2929
#include &stdio.h&
int main()
&&& int n, c=0;
&&& for (n=3; n&1000; n+=3)
&&&&&&&&if (n%10==3 || n/10%10==3 || n/100==3)
&&&&&&&&&&&&printf(&%d &, n);
&&&&&&&&&&&&if (++c&=4)
&&&&&&&&&&&&&&& puts(&&), c=0;
&&& return 0;
4个一行的话
永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
3的倍数也就是各个位数的和能整除3
设个 char a,b,c;
0&=b&10,0&=c&10;
那么只需(b+c)%3==0
然后 a,b,c组合&&
等 级:贵宾
威 望:27
帖 子:4422
专家分:4019
回复 3楼 御坂美琴
御姐的回帖一定要顶,
我就是真命天子,顺我者生,逆我者死!
等 级:业余侠客
帖 子:146
专家分:210
以下是引用hahayezhe在 19:06:35的发言:
3的倍数也就是各个位数的和能整除3
设个 char a,b,c;
0&=b&10,0&=c&10;
那么只需(b+c)%3==0
然后 a,b,c组合&&不带你这样玩的,这样更累
等 级:业余侠客
帖 子:146
专家分:210
一个数除10的余就是他的个位数,
还是这招if (n%10==3 || n/10%10==3 || n/100==3)
等 级:业余侠客
帖 子:146
专家分:210
#include &stdio.h&
int main()
&&& int n, c=0;
&&& for (n=1; n&1000; n++)
&&&&&&&&if( (n%3==0)&&( (n%10==3 || n/10%10==3 || n/100==3)))
&&&&&&&&&&&&printf(&%d &, n);
&&&&&&&&&&&&if (++c&=4)
&&&&&&&&&&&&&&& puts(&&), c=0;
&&& return 0;
拿御姐的改一下,别生气哦
等 级:论坛游民
帖 子:126
专家分:54
我知道你们那样会比较短,但我的那个效率会更高的啊
版权所有,并保留所有权利。
Powered by , Processed in 0.154727 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved君,已阅读到文档的结尾了呢~~
C语言1-3章习题解答 内容详尽,但请以实际操作为准,欢迎下载使用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
C语言1-3章习题解答
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口计蒜客【挑战难题】系列讲解(三)判断质数 - Jasin Yip
作者:JasinYip
时间:May 9, 2014
第3题:判断质数
&&对于大于1的数,如果除了1和它本身,它不能再被其它正整数整除,那么我们说它是一个质数。晓萌想判断一个数是不是质数,希望找你写个程序,帮助她进行判断。
&&输入包括一行,为一个整数N(1 & N ≤1000),正是晓萌给出你让你判断的数字。
&&输出包括一行,如果晓萌给出的整数N为质数,那么输出YES;如果N不是质数,那么输出NO。
#include &stdio.h&
#include &math.h&
int main(){
scanf(&%d&, &Num);
if (Num == 2){
printf(&YES&);
if (Num % 2 == 0){
//先判断是否为偶数,若偶数就直接输出NO并结束程序
printf(&NO&);
//在主程序main()中使用return 0可以直接结束程序
//从3开始,到Num的算术平方根结束,步进为2
for (i = 3; i &= sqrt(Num); i += 2)
if (Num % i == 0){
printf(&NO&);
printf(&YES&);
它如何工作
根据质数的定义(除1和它本身外不能被其它数整除的数),这个题对于初学者来说有点儿难度,一下子想不到该怎么下手。
算法是怎样来的?
我们可以这样想:如果我们用大脑来判断这个数是不是质数,是该怎样的呢?
比如我拿 4 来举例。
假设我并不知道它能被什么数整除,
那我一个一个试总行了吧?
当然,1不用试,那我从2开始试吧!
于是发现4可以被2整除耶!
那我就可以判定:4这个数不是质数。
嗯……好像还是想不到怎么做。
那就再举个粟子呗~
这次我拿 9 来举例。
我还是先试2,嗯,9不能被2整除。
那我试一试3,嗯,9能被3整除。
那我就可以判定:9这个数不是质数。
再举一个质数的例子:5 。
试2,不能整除。
试3,不能整除。
试4,不能整除。
噢,到了5(它的本身)了,好吧~
我可以宣布一个事实了:5是质数!
说到这儿,大家得到什么启发?
我们可以从2开始,直到n-1,试除每一个数字。
如果都不能整除n,那么n就是质数了!
所以,我们根据上面的分析,想到了用循环去试除2~(N-1)的每一个数。
于是得到以下代码:
for (i = 2; i &= Num - 1; i ++)
//从2开始,循环至(N-1)结束
if (Num % i == 0){
//判断是否能整除
printf(&NO&);
return 0; //在主程序main()里使用return 0可使整个程序结束
好了,这样已经可以实现判断质数的能力了。
那么,我们能不能对其进行优化呢?
答案是肯定的。
首先,如果n是偶数,那就肯定不是质数了(可以输出NO并结束了),因为它能被2整除。
所以,如果n不是偶数的话,我们只需要从3开始,只试除3、5、7这样的奇数就好了。
所以我们可以把循环:写成由3开始,根号Num结束,步进为2的循环。
//由3开始,根号Num结束,步进为2的循环
for (i = 3; i &= Num - 1; i += 2)
if (Num % i == 0){
printf(&NO&);
这样的程序可以节省一半的循环量,速度已经挺快的了。
最后介绍一个数学知识:我们只需要试除到n的算术平方根,如果都没有能整除它的数,那么就能判断这个数是质数了。
至是为神马我这里不细说,有兴趣可以百度。
最后循环改成这样ok啦:
for (i = 3; i &= sqrt(Num); i += 2)
if (Num % i == 0){
printf(&NO&);
添加新评论
(11) (13) (7) (1) (3) (2) (1) (1)
文章总数:37 篇
标签总数:53 条
评论总数:95 条
建站时间:日
最后更新:日
运行天数:844 天1485:C语言实验题――整除
1485: C语言实验题――整除
时间限制(普通/Java):1000MS/10000MS & &
内存限制:65536KByte
& & & && &
测试通过:3594
判断一个数n能否同时被3和5整除。
输入一个正整数n。
如果能够同时被3和5整除,输出Yes,否则输出No。
题目上传者
Copyright @ , 台州学院软件理论与技术科研(教学)团队. All Rights Reserved.

我要回帖

 

随机推荐