实时搜索: 100以内的素数有几个

100以内的素数有几个

225条评论 1893人喜欢 5262次阅读 394人点赞
帮帮忙啊 , 100以内的素数之和用C语言怎么编写程序?怎么写? , 高手速来解答 ...

用C语言编写一个程序,输出100以内的所有的素数.要求每行仅输出5个素数.: 楼上的效率差点,把内层for循环的j<i/2改为j<=sqrt(i)更好,(sqrt虽然稍慢点,但是多做sqrt(i)+1~i/2步循环更慢!

求100以内的所有素数,每行输出8个: 2、3、5、7、11、13、17、19、23、29、31、33、37、41、43、47、49、51、53、57、59、61、67、71、73、79、83、87、89、91、97

100以内的素数之和用C语言怎么编写程序?:

这个问题可以分成两部分解决,一个是判断素数,另一部分是实现累加和输出。

一、判断素数。

有以下两种常见的判断素数的方法。

1 通过数学定义判断,即查找所有因子,如果存在除1及本身以外因子,则非素数。

代码如下:

#include <math.h>//用到开平方函数,引用对应的数学头文件
int is_prime(int n)
{
int i;

for(i = 2; i <= (int)sqrt(n); i ++)//根据数学定义,除本身外,其它因子不可能比平方根更大,所以只需要判断不大于平方根的值即可。其中sqrt为求平方根函数。
if(n%i==0) return 0; //只要有一个符合条件的因子,则非素数,返回0。

return 1; //该数为素数。
}

这个算法可以应用于任何情况。


2 素数筛。

这种算法的原理是,所有素数的倍数都不是素数。

先假定所有数均为素数,然后去掉已知素数的倍数,最终得到一定范围内所有素数。

代码如下:

int map[100];//数据规模,这里使用题目中的100,实际上应该是标记0-100,也就是101个单位,但是100是已知的非素数,所以用100个元素就足够了。
void make_map(void)
{
int i,j;

map[1] = 1; //1 不是素数。
for(i = 2; i < 100; i ++)
{
if(map[i])continue; //对于已知的非素数,不做处理
for(j = i*2; j < 100; j +=i)
map[j] = 1;
}
}

int is_prime(int n)
{
if(map[1] == 0) make_map(); //如果1没有被标记为非素数,那么表示map没有生成,需要生成map。
return map[n] == 0; //如map[n]为0,则n为素数
}

这种算法空间开销与数据规模成正比,当数据规模比较大时并不适用。

但对于数据规模小且素数判断频繁的情况,具有更高的时间开销优势。


二、累加。

这部分可以放置于主函数。调用上述任意一种素数判断函数皆可。

#include <stdio.h>
int main()
{
int sum = 0;//累加结果
int i;

for(i = 2; i < 100; i ++)
if(is_prime(i))sum+=i;//累加素数。

printf("sum = %d\n", sum);//输出结果。
}

最终输出sum=1060

vfp编写程序:求100以内的所有质数及质数和: 以下是根据质数的定义写的程序,先显示范围内所有的质数,最后显示的是质数和。
tmpN=0
for i = 2 to 100
tmpC=.F.
for j = 2 to i
if int(i/j)=i/j .and. i<>j
tmpC=.T.
endif
next
if tmpC=.F.
?i
tmpN=tmpN+i
endif
next
?tmpN

labview求100内所有素数之和: public class Yugi{ public static void main(String[] args){ int sum = 0; for(int i = 2; i < 100; i++){ boolean isPrime = true; for(int j = 2; j < i; j++){ if(i % j == 0){ isPrime = false; break; } } if(isPrime){ sum += i; } } System.out.println(sum); }}

编程题:输出10到100以内素数,如何编?: #include <stdio.h>
int main(int argc,char *argv[]){
    int i,j;
    for(i=11;i<100;i+=2){
        for(j=3;j*j<=i;j+=2)
            if(i%j==0)
                break;
        if(j*j>i)
            printf("%3d",i);
    }
    printf("\n");
    return 0;
}

VB:求出100以内所有素数的和,并将结果输出到窗体上,并存入所给变量SUM中: 这完全不需要所谓高手
~
~
~
~

编程,调用一个判别素数的函数,求出1~100之间的所有素数: Private Function prime(n As Integer) As Boolean  '返回值=True是素数,False不是素数
Dim k As Integer
prime = True
For k = 2 To n - 1
  If (n Mod k) = 0 Then prime = False: Exit For
Next k
End Function
Private Sub Command1_Click()
Dim i As Integer,j as integer
For i = 2 To 100
  If prime(i) Then
    Print Format(i, "@@@@@");
    j = j + 1
    If j = 10 Then j = 0: Print
  End If
Next
End Sub

  • dpq是谁

    使用软化剂对头发有没有害处?: 软化其实是柔顺的一种专业术语,软化是针对发质较硬的一种美发护理手段,头发软化的标准和可能会造成的危害如下: 1、软化不到位会导致头发达不到想要的效果。专业角度讲,软化程度一般要达到比软化前头发的2到3倍。最好的测试...

    537条评论 4567人喜欢 4467次阅读 894人点赞
  • 希尔顿在哪

    比亚迪全新唐DM适合年轻人开吗?: 可以啊,这款车非常适合年轻人开,科技感十足,而且车内配备了一个12.3英寸的液晶仪表盘,中控是一块很大的屏幕,很大而且清晰,看着很舒服,也符合现在追求“大”的潮流。而且车里空间也很大,前排坐进去的时候有豪华舱的感觉,...

    377条评论 6107人喜欢 5384次阅读 947人点赞
  • oppor9手机多少钱

    交换机连接无线路由器怎么设置 我从交换机连出线后直接插入lan端口 路由器显示wan口没插入接口: 从交换机出来的线接在无线路由的WAN口,不是接在LAN口,你接在WAN口当然就显示WAN口没插入啊。正解的接法是:交换机出来的线接无线路由器的WAN口,无线路由器LAN口出来的线接电脑,接完后就可以在电脑浏览器输入1...

    525条评论 3790人喜欢 4792次阅读 723人点赞
  • 16款轩逸有几个喇叭

    明年大哥就要去服兵役了,我们的EXO又少一个人,L有什么想说的: 允浩明年才去服役,金包子服役也太扯了吧?小道消息不可靠,别总看不沾边的爆料。 ...

    484条评论 1949人喜欢 5935次阅读 978人点赞
  • 340大卡需运动多久

    比亚迪新能源汽车有目共睹,燃油车质量怎么样?: 比亚迪等各种类型的新能源车,让环境污染减轻了许多,那么这时候,燃油车是否还有...目前新能源车存在的技术问题大家是有目共睹,短时间是很难普及开来替燃油车 ...

    789条评论 1298人喜欢 1052次阅读 824人点赞