輸入一個自然數n,求小於等於n的素數之和
程式碼如下
#include<stdio.h> #include<math.h> int panduan(int i) { int n=2,p=1; if(i==2||i==3) return 1; while(n<=sqrt(i)) { if(i%n==0) p=0; n++; } return p; } int main() { int n,i=2,str=0; printf("請輸入一個自然數n\n"); scanf("%d",&n); for(i=2;i<=n;i++) { if(panduan(i)==1) str+=i; } printf("%d\n",str); }
執行截圖
相關推薦
輸入一個自然數n,求小於等於n的素數之和
程式碼如下 #include<stdio.h> #include<math.h> int panduan(int i) { int n=2,p=1; if(i==2||i==3) return 1; while(n<=sqrt(i)) {
輸入一個整數n,求小於這個整數的所有質數。
演算法:定義一個長度為n的boolean陣列,true表示是質數,false表示不是質數。初始化為true,之後從2開始迴圈。步驟: I、找到第一個值為true的下標i。 II、把所有的下標為i的倍數的值 置為false。 III、直到掃描完陣列中的所有數值
求小於等於n的質數個數
埃氏篩法(Eratosthenes篩選法) 演算法基本思想:要得到自然數n以內的全部素數,必須把不大於n1/2的所有素數的倍數剔除,剩下的就是素數。 給出要篩數值的範圍n,找出n以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉;再用2的下一個沒被篩掉的數
求小於等於N的所有正整數裡面包含的1的個數
題目: 已知一個正整數N,求比N小(包括N)的所有正整數中包含的1的個數。例如N = 12,則包含5個1,分別為1、10、11、12 解答: 最直觀最簡單的想法是,從1到N對每一個數檢查,得出每個數中包含的一的個數,事件複雜度大概是O(N)1時間複雜度比較高,不是最優演
【轉AekdyCoin】求小於等於N的與N互質的數的和
話說我以前求這樣的問題都是先求與N不互質的數,把N分解質因數,然後用容斥原理,今天看了大牛的部落格,頓時覺得弱爆了。。。 以下內容轉大牛文章: if gcd(n,i)=1 then gcd(n,n-i)=1 (1<=i<=n) 反證法: 如果存在K!=1使gcd
【C語言】輸入一個整數N,求N以內的素數之和
【C語言】輸入一個整數N,求N以內的素數之和 /* ============================================================================ Name
從鍵盤中輸入一個整數n,求1-n的和,以及偶數和、奇數和
n=int(input("從鍵盤中輸入一個數:")) sum1=0 sum2=0 sum3=0 i=1 while i<=n: sum1+=i if i%2==0: sum2+=i else:
劍指offer第32題JS演算法:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次
題目:輸入一個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1的數字有1,10,11和12,1一共出現了5次 這是我某一次去朋友公司面試試水時出的面試題,結果給我五分鐘我寫了個for迴圈的方法,被狠狠鄙視/哭笑不得 結果回來後好奇就跟同事
c語言 寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。 斐波拉契數列:1,1,2,3,5,8...,當n
c語言:寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。斐波拉契數列:1,1,2,3,5,8...,當n大於等於3時,後一項為前面兩項之和。解:方法1:從斐波拉契數列的函式定義角度程式設計#include<stdio.h>int fibonacci(int n){int nu
輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是double
返回值 %d time data body 一個 pow color printf 題目描述 輸入一個正數x和一個正整數n,求下列算式的值。要求定義兩個調用函數:fact(n)計算n的階乘;mypow(x,n)計算x的n次冪(即xn),兩個函數的返回值類型是d
輸入一個子串和一個整串,求該子串在整個字串中出現的次數
編寫應用程式,輸入一個子串和一個整串,求該子串在整個字串中出現的次數 import java.util.*; public class Tetso5 { public static void main(String[] args) { // TODO Auto-generated
輸入兩個正整數m和n,求其最大公約數和最小公倍數。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int a = scanner.nextInt
C語言例項—輸入兩個正整數m和n,求其最大公約數和最小公倍數(gcc 編譯)。
1.輾轉相除法 輾轉相除法是古希臘求兩個正整數的最大公約數的,也叫歐幾里德演算法,其方法是用較大的數除以較小的數,上面較小的除數和得出的餘數構成新的一對數,繼續做上面的除法,直到出現能夠整除的兩個數,其中較小的數(即除數)就是最大公約數。以求288和123的最大公約數為例,操作如下: 288÷1
【程式6】 題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
在迴圈中,只要除數不等於0,用較大數除以較小的數,將小的一個數作為下一輪迴圈的大數,取得的餘數作為下一輪迴圈的較小的數,如此迴圈直到較小的數的值為0,返回較大的數,此數即為最大公約數,最小公倍數為兩數之積除以最大公約數。 import java.util.Scanner;
輸入一個數字n,列印1到n位數的最大值。eg:n=3,代表列印1-999之間的數字
相關解決: package com.swordRefersToOffer; import java.util.Arrays; /** * @author 凌龍 * @date 2018/9/28 */ public class Test { public
給定一個正整數n,求出0到n中有幾個數滿足其二進位制表示不包含連續的1
樣例: 輸入:5 輸出:5 0 01 10 100 101滿足,11不滿足。 那麼6144呢? 答案是610,怎麼去計算呢? 思路:查詢從0到n中有多少個數包含連續的1,然後在總數中去掉這些情況,得到
輸入一個正整數n,輸出1到n的所有排列
思路:字典序演算法 1、從序列的末端開始,找到第一個相鄰數組合,其中第一個數小於第二個數,比如:1 2 3 4,第一個組合是34,記錄3的位置為i; 2、從i位置之後的元素中,從末端開始找第一個大於它的數,就是4,交換這兩個數,變為 1 2 4 3; 3、將i位置之後的數全
篩法求小於等於整數n的所有質數
篩法求n以下的質數最核心的是確定其倍數未消去的最大數p應該滿足的條件。要消去q的倍數,最小應該從q*q考察起(因為其他跟小的倍數已經由2p,3p。。。(p-1)*p消去了) 那麼消去q的倍數只需從q*q開始 到n結束(滿足不等式q*q <=n). 以下是測試程式碼: #
求所有小於等於n的素數
設計一個程式,輸出所有小於等於n(n為一個大於2的正整數)的素數。 要求: 1、每行輸出10個素數 2、儘可能採用較優的演算法 #include <iostream