| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:- -愁死了.弄不明白..
只看楼主 加入收藏
寂寞日落
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-10-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
- -愁死了.弄不明白..
编写一个函数用来实现将一个数组指定的素数元素删除,主函数中定义10
个元素的一维数组,从键盘输入相应的数据,将数组。要删除的元素
。数组的大小(采用默认形参)作为实参传给函数,主函数中输出删
除之后的结果。

#include<iostream.h>
#include<math.h>
void main()
{   
    int a[10],i,flag,m,k=0,j;
    cout<<"请输入10个整数:";
    for(i=0;i<10;i++)
        cin>>a[i];   
    for(i=0;i<10;i++)   
        if(a[i]!=1)   
        {        
            flag=0;        
            m=(int)sqrt(a[i]);        
            for(j=2;j<=m;j++)        
                if(a[i]%j==0)        
                    flag=1;      
                if(flag)
        
                {        
                    cout<<a[i]<<" ";         
                }   
        }

}
一直不明白这段加红代码是怎样判断素数并且删除的..
搜索更多相关主题的帖子: include 键盘 元素 
2013-07-11 14:27
寂寞日落
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-10-10
收藏
得分:0 
sqrt也可以判断素数吗?
2013-07-11 14:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
你的代码是坨屎,现在来说素数
素数的定义:对于大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

对于 n 而言,大于 根号n 的数肯定不能被 n 整数。
所以判断一个自然数是不是素数,只需要从2到其自身,整数看看有没有余数就行了
2013-07-11 14:45
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
大哥,你这些代码是用来输出是素数的元素的,比如说你输入10,11,12,13,14,15,16,17,18,19,最后的输出结果是:11,13,17,19for(i=0;i<10;i++)   
        if(a[i]!=1)   
        {
        
             flag=0;        
             m=(int)sqrt(a[i]);        
             for(j=2;j<=m;j++)        
                 if(a[i]%j==0)        
                     flag=1;      
                if(flag)        
                 {        
                     cout<<a[i]<<" ";         
                 }   
        }

 这段标记红色的代码是用来判断10个元素是否为素数,如果是,就输出。

思考赐予新生,时间在于定义
2013-07-11 14:49
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:15 
像3楼所说的:对于 n 而言,大于 根号n 的数肯定不能被 n 整数。
所以判断一个自然数是不是素数,只需要从2到其自身,整数看看有没有余数就行了
m=(int)sqrt(a[i])意思就是对a[i]进行开方,然后再取整,最后赋值给m。
for(j=2;j<=m;j++)  //这段代码就是按照判断素数的定义执行的,从2开始,一直循环到m,如果a[i]%j的余数为0,说明a[i]这个元素是素数,那么flag=1,最后就执行cout语句
if(a[i]%j==0)        
  flag=1;      
 if(flag)        
{  cout<<a[i]<<" ";}   


思考赐予新生,时间在于定义
2013-07-11 14:57
寂寞日落
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-10-10
收藏
得分:0 
回复 5楼 love云彩
多谢...明白了..
2013-07-11 15:04
快速回复:- -愁死了.弄不明白..
数据加载中...
 
   



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

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